Цикл по объектам массива для вывода - PullRequest
0 голосов
/ 20 июля 2011

Я отправил $ data ['items'] в мое представление, которое создало массив, полный объектов, которые я могу отобразить с помощью цикла foreach.

foreach($items as $row)
  {
    echo $row->NAME . " - " . $row->COLOUR . "<br>";
  }

Я хочу, чтобы они отображались в них.в браузер в группах с именем цвета в качестве тега заголовка, затем запустите цикл для этого цвета.Я просто не уверен, какой тип цикла делать, или я должен иметь цикл внутри цикла?

СИНИЙ

-элемент 1

-элемент 3

КРАСНЫЙ

- элемент 2

- элемент 4

- элемент 5

Ответы [ 2 ]

0 голосов
/ 20 июля 2011
$list = array();
foreach($items as $row)
{
  $list[$row->COLOUR][] = $row->NAME;
}

$header = null;
foreach($list as $item)
{
  if($header != $item->COLOUR)
  {
    echo '<h3>' . $item->COLOUR . '</h3>';
    $header = $item->COLOUR;
  }
  echo '- ' . $item->NAME . '<br />';
}
0 голосов
/ 20 июля 2011

Возможно, вам нужен временный двумерный массив:

$tmp = array();
foreach($items as $row)
{
    // this code groups all items by color
    $name = $row->NAME;
    if( !isset ($tmp[ $name ] ) ) $tmp[ $name ] = array();
    $tmp[ $name ][] = $row->COLOUR;
}

foreach( $tmp as $color => $items )
{
   // colors are now keys to the temp array
   echo $color;
   // these are all of the items grouped under the current color
   foreach( $items as $item )
   {
       // output the item.
       echo "<br /> - $item";
   }
   echo "<br />";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...