2013-08-15 5 views
1

현재 범주라는 배열의 항목을 기반으로 html 테이블에 배열을 그룹화하는 문제가 있습니다.범주를 기반으로하는 테이블의 PHP 그룹화

나는 다음과 같은 코드가 있습니다

foreach ($this->items as $item) { 
    $categories[] = $item->category; 
} 

<?php foreach ($categories as $category): ?> 
     <table class="table table-bordered"> 
     <?php foreach ($this->items as $item) :?> 
      <tr> 
       <td></td> 
       <td><?php echo $item->description; ?></td> 
       <td><?php echo $item->price; ?></td> 
      </tr> 
     <?php endforeach; ?> 
     </table> 
    <?php endforeach; ?> 

을하지만 난 그는 카테고리에 따라이 테이블로 이동하거나 해당 범주에 대한 테이블을 만들 필요가 그것을 어떻게 알 수 있습니까?

enter image description here

는 설명 추가 :

foreach($this->items as $item){ 
if(!isset($zones[ $item->zone ])) 
$zone_items[ $item->zone] = array(); 
$zone_items[ $item->zone ][] = $item; 

    $zones[$item->zone] = array(
     'zone' => $item->zone, 
     'zone_description' => $item->zone_description, 
     'items' => $zone_items[$item->zone] 
    ); 

} 


<?php foreach($zones as $zone): ?> 
    <?php echo $zone['zone']; ?><br /> 
    <?php echo $zone['zone_description']; ?> 

    <?php foreach($zone['items'] as $items) :?> 
     <?php echo $items->name; ?> 
     <?php echo $items->description; ?> 
     <?php echo $items->category; ?> 
    <?php endforeach; ?> 

<?php endforeach; ?> 
:

내가 그것을 고정 된 생각을이 코드를 사용 ...처럼 각각 별도의 카테고리에 대한

최종 결과는 같아야합니다

와 나는 이름과 설명을 얻는다. 그러나 어떤 항목이 아니라도.. 크게 감사했다.

+0

당신이 할 수있는 여러 크기와 배열을 구축해야 –

+0

카테고리 다음 다음 차원의 각 범주에 대한 항목을 첫 번째 차원 인과, catrgories하여 루프 내에서 중첩 루프를 추가하여. 그렇다면 두 개의 루프를 사용하여 카테고리와 아이템을 카테고리 – DevZer0

+0

Guys에 표시 할 수 있습니다 ... 프로그래밍 할 때 좋지는 않습니다 ... 모든 리소스/예제가 훌륭 할 것입니다 ... –

답변

1

어때? 난 당신이 생각 :) 내 예제에서 테이블도 터져입니다 얻을, 너무 버그를 용서 테스트하지 않았지만, 음 ... 그냥 여기에서 바로 그것을 얻을 하구 걸릴 것이다

$categories = array(); 
foreach($this->items as $item) 
{ 
    if(!isset($categories[ $item->category ])) $categories[ $item->category] = array(); 
    $categories[ $item->category ][] = $item; 
} 

<?php foreach($categories as $category => $items): ?> 
    <table class="table table-bordered"> 
     <tr> 
      <td rowspan="<?php echo count($items); ?>"><?php echo $category; ?></td> 
      <?php foreach($items as $item) :?> 
       <td><?php echo $item->description; ?></td> 
       <td><?php echo $item->price; ?></td> 
      <?php endforeach; ?> 
     </tr> 
    </table> 
<?php endforeach; ?> 
P를

범주에 대한 설명을 포함하려면 배열을 다시 작성해야합니다. 이제는 카테고리 설명이 어디에서 오는지 알지 못하므로 배열 및 출력이 어떻게 나타나는지 보여주고 빌드하는 방법을 알려줍니다.

<?php 
$categories = array(
    array(
     'name' => 'Category Name', 
     'description' => 'This is the category description', 
     'items' => $itemsForThisCategory //you can still sort the items by category like I did above and then do "$itemsSortedByCategory[ 'Category Name' ]" here 
    ), 
    array(
     'name' => 'Another Category Name', 
     'description' => 'This is the description for another category', 
     'items' => $itemsForAnotherCategory 
    ), 
    //etc... as many categories as you have 
); 
?> 

그러면 출력은 다음과 같습니다.

<?php foreach($categories as $category): ?> 
    <table class="table table-bordered"> 
     <tr> 
      <td rowspan="<?php echo count($category['items']); ?>"> 
       <?php echo $category['name']; ?><br /> 
       <?php echo $category['description']; ?> 
      </td> 
      <?php foreach($category['items'] as $item) :?> 
       <td><?php echo $item->description; ?></td> 
       <td><?php echo $item->price; ?></td> 
      <?php endforeach; ?> 
     </tr> 
    </table> 
<?php endforeach; ?> 
+0

rme, 고마워요! –

+0

이봐 요, 그냥 카테고리 이름과 함께 카테고리 설명이라는 다른 것을 추가해야한다고 말할 수 있습니다. 어떻게해야합니까? –

+1

여기 코드를 입력 할 수 없습니다. 나는 이것을 보여줄 나의 대답을 편집 할 것이다. – verv

0
$categories = []; 

foreach($this->items as $item) 
{ 
    $categories[$item->category][] = $item; 
} 

이제 각 인덱스가 분류되고, 그 카테고리의 항목을 포함하여, 연관 $categories 배열이 있어야합니다. 이제 foreach로 루프를 돌리고 $category 인덱스를 출력하고 안에 포함 된 객체를 출력 할 것입니다.

관련 문제