>백엔드 개발 >PHP 튜토리얼 >arraynetworks PHP 배열 크로스탭 구현 코드

arraynetworks PHP 배열 크로스탭 구현 코드

WBOY
WBOY원래의
2016-07-29 08:43:261135검색

SQL 문을 사용해서 하면 작업량이 너무 많아질 것 같아서 제가 직접 크로스탭 클래스를 작성해 보겠습니다. 더 이상 고민하지 말고 코드를 살펴보겠습니다.

복사 code 코드는 다음과 같습니다.


/**
* 기본 크로스탭
* @authorhugh
*
*/
class Pivot
{
private $HORIZONTAL_TOTAL_FIELD = 'total';
private $VERTICAL_TOTAL_FIELD = 'total';
private $topPivot;
private $leftPivot;
private $horizontalColumn = array ();
private $verticalColumn = array ();
private $isHorizontalTotal = true
private $horizontalTotal = null
비공개 $verticalTotal = null;
비공개 $title = 'PivotTab'
/**
* 크로스탭 초기화
*/
비공개 함수 InitPivot()
{
$this-> topPivot;
foreach( $this ->data as $d )
{
$this->horizontalColumn [] = $d [$this->leftPivot]
$this- >verticalColumn [] = $d [ $this->topPivot]
}
$this->horizontalColumn = array_unique ( $this->horizontalColumn ); = array_unique ( $this->verticalColumn );
$reasult = array ()
foreach ( $this->horizontalColumn as $h )
{
foreach ( $this-> $v로서의 수직 열 )
{
$this->pivotValue [$h] [$v] = 0
}
}
}
/**
* 데이터 입력
*/
비공개 함수 fillData( )
{
foreach( $this->data as $row )
{
$this->pivotValue [$row [$this-> ;leftPivot]] [$row [$ this->topPivot]] = $row [$this->measure]
}
if ($this->isHorizontalTotal)
{
$this->setHorizontalTotal () ;
}
if ($this->isVerticalTotal)
{
$this->setVerticalTotal ()
}
}
/**
* 세로 합계 설정
*/
비공개 함수 setVerticalTotal()
{
$this->verticalColumn [] = $this->VERTICAL_TOTAL_FIELD
foreach( $this- >horizontalColumn as $i )
{
$rowsum = 0
foreach ( $this->verticalColumn as $j )
{
$rowsum = $this->pivotValue [$i] [$j]
}
$this->pivotValue [$i] [$this->TOTAL_FIELD] = $rowsum
}
}
/ **
* 가로 합계 설정
*/
비공개 함수 setHorizontalTotal()
{
$this->horizontalColumn [] = $this->HORIZONTAL_TOTAL_FIELD
foreach( $this->verticalColumn as $i )
{
$rowsum = 0;
foreach( $this->horizontalColumn as $j )
{
$rowsum = $this->pivotValue [$j] [$i]
}
$this->pivotValue [$this->HORIZONTAL_TOTAL_FIELD] [$i] = $rowsum
}
}
/**
* 렌더링
*/
function Render( )
{
echo '

' 
print_r( $this->pivotValue )
}
/**
* 테이블로 렌더링
*/
function RenderToTable( )
{
$resault = "n"
$resault .= "$this-> ;titlen";
foreach( $this->verticalColumn as $value )
{
$resault .= "
n";
}
$resault .= "n";
foreach( $this->horizontalColumn as $i )
{
$resault .= "n"
foreach( $this->pivotValue [$i] as $value )
{
$resault .= "n"
$resault .= "< /table>";
return $resault;
}
/**
* 크로스탭 구성
* @param $data 데이터 소스
* @param $topPivot 헤더 열 필드
* @param $leftPivot 왼쪽 열 필드
* @param $measure 계산 금액
*/
function __construct(array $data, $topPivot, $leftPivot, $measure)
{
$this->data = $data;
$this->leftPivot = $leftPivot;
$this->topPivot = $topPivot; 측정;
$this-> ;horizontalColumn = 배열();
$this->verticalColumn = 배열()
$this->InitPivot(); fillData ();
}
}


InitPivot 메서드와 fillData 메서드에 중점을 둡니다.
InitPivot은 모든 항목이 값을 갖도록 보장합니다(기본값은 0)
fillData 메서드는 데이터를 설치하는 $pivotValue에 데이터를 채우기 위해 선택하고 채우는 방법을 사용합니다.
그런 다음 원하는 대로 출력할 수 있습니다.
위 내용은 arraynetworks의 내용을 포함하여 arraynetworks PHP Array 크로스탭의 구현 코드를 소개한 내용입니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
$ value
$i$value< ;/td>n";
}
$resault .= "