Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在类别标题中显示类别项目_Php_Joomla2.5 - Fatal编程技术网

Php 如何在类别标题中显示类别项目

Php 如何在类别标题中显示类别项目,php,joomla2.5,Php,Joomla2.5,我有一个如下的数组 Array ( [0] => stdClass Object ( [id] => 1 [cat_id] => 1 [item_name]=>test1 [cat_name] => Normal ) [1] => stdClass Object ( [id]

我有一个如下的数组

Array
(
    [0] => stdClass Object
        (
            [id] => 1
            [cat_id] => 1
            [item_name]=>test1
            [cat_name] => Normal
        )

    [1] => stdClass Object
        (
            [id] => 2
            [cat_id] => 2
            [item_name]=>test2
            [cat_name] => Featured
        )

    [2] => stdClass Object
        (
            [id] => 3
            [cat_id] => 2
            [item_name]=>test3
            [cat_name] => Featured
        )  
)  
我希望结果是这样的

正常

test1
精选

test2  |  test3
到目前为止,我已经尝试过:

<?php
foreach($rows as $row){
    echo '<h2>'.$row->cat_name.'</h2>';
    echo '<p>'.$row->item_name.'</p>';
}
?>

但它显示了每个项目的标题。有人能帮我整理一下吗


谢谢

你想把他们分组吗?这里有一个函数:

function groupBy($arr, $func) {
    $groups = [];

    foreach($arr as $item) {
        $group = $func($item);

        if(array_key_exists($group, $groups))
            $groups[$group][] = $item;
        else
            $groups[$group] = [$item];
    }

    return $groups;
}
像这样使用它:

$groups = groupBy($rows, function($row) { return $row->cat_name; });

foreach($groups as $name => $items) {
    echo "<h2>$name</h2>";

    foreach($items as $item)
        echo "<p>{$item->item_name}</p>";
}
$groups=groupBy($rows,function($row){return$row->cat_name;});
foreach($name=>$items的组){
回显“$name”;
foreach($items作为$item)
回声“{$item->item_name}

”; }
如果您没有PHP 5.3的奢华,那么您可以使其更加专业化:

function groupBy($arr, $prop) {
    $groups = array();

    foreach($arr as $item) {
        $group = $item->$prop;

        if(array_key_exists($group, $groups))
            $groups[$group][] = $item;
        else
            $groups[$group] = array($item);
    }

    return $groups;
}
...
$groups = groupBy($rows, 'cat_name');

foreach($groups as $name => $items) {
    echo "<h2>$name</h2>";

    foreach($items as $item)
        echo "<p>{$item->item_name}</p>";
}
function groupBy($arr,$prop){
$groups=array();
foreach($arr作为$item){
$group=$item->$prop;
如果(数组\键\存在($group,$groups))
$groups[$group][]=$item;
其他的
$groups[$group]=数组($item);
}
返回$groups;
}
...
$groups=groupBy($rows,'cat_name');
foreach($name=>$items的组){
回显“$name”;
foreach($items作为$item)
回声“{$item->item_name}

”; }