我从数据库中返回行并从另一个表中加入以获得每个产品的品牌,我希望能够拆分
Array(
[0] => stdClass Object
(
[pid] => 1
[prodref] => F50
[brand] => 1
[name] => Adidas
)
[1] => stdClass Object
(
[pid] => 3
[prodref] => Mercurial
[brand] => 2
[name] => Nike
)
)
这是一个简化版本,但我有四个品牌,在数据库查询中我按品牌订购,然后是 prodref ,所以我希望能够通过品牌拆分数组键 - 所以我只需要一次数据库查询即可在页面的不同区域显示所有Adidas产品。
答案 0 :(得分:2)
foreach ($rows as $row) {
$result[$row->name][] = $row;
}
答案 1 :(得分:0)
如果你只有非常具体的情况,比如里面的属性有一个像品牌2这样的值,你可以重载数组,然后按你认为合适:
# $rows is your resultset
$rows = function($filter = NULL, $prop = 'brand') use ($rows)
{
if(!$filter) return $rows;
$subset = array();
foreach($rows as $row)
if ($row->$prop == $filter) $subset[] = $row;
return $subset;
};
如果您以后想要输出所有$rows
:
foreach($rows() as $row) ...
或者,如果您想获得品牌2的所有行:
foreach($rows(2) as $row) ...
或1:
foreach($rows(1) as $row) ...
最后,如果您想通过其他属性获取子集:
foreach($rows('Adidas', 'name') as $row) ...
如果您的应用程序增长,您应该查看SPL and the Iterators it offers。