我正在使用mysql查询返回一系列产品,这些产品适用于php中的某些汽车,看起来像这样;
array {
[0]=> array(3) {
["sku"]=> string(16) "123a "
["make"]=> string(20) "Ford"
["model"]=> string(25) "Escort"
}
[1]=> array(3) {
["sku"]=> string(16) "123b"
["make"]=> string(20) "Ford"
["model"]=> string(25) "Escort"
}
[2]=> array(3) {
["sku"]=> string(16) "123c"
["make"]=> string(20) "Ford"
["model"]=> string(25) "Focus"
}
[3]=> array(3) {
["sku"]=> string(16) "123d"
["make"]=> string(20) "Alfa Romeo"
["model"]=> string(25) "159"
}
[4]=> array(3) {
["sku"]=> string(16) "123e"
["make"]=> string(20) "Alfa Romeo"
["model"]=> string(25) "159"
}
}
我正在尝试研究如何使用foreach循环来遍历数据,最后得到一个新的分组/嵌套数组,这些数组将是这样的;
[Ford]=>
{["model"]=>"Escort" ["skus"]=>("123a", "123b)}
{["model"]=>"Focus" ["skus"]=>("123c")}
["Alfa Romeo]=>
{["model"]=>"159" ["skus"]=>("123d", "123e")}
因此,我希望将所有记录分组为' make',sub group by make& amp;模型然后把所有的skus放在一起制作模型组合。
非常感谢任何帮助。
答案 0 :(得分:1)
你可以做这样的事情(输出不是你要求的,但更容易使用):
$output = array();
foreach ($cars as $car) {
$output[$car['make']][$car['model']][] = $car['sku'];
}
这会给你以下输出:
[Ford] => Array
[Escort] => Array
[0] => 123a
[1] => 123b
[Focus] => Array
[0] => 123c
[Alfa Romeo] => Array
[159] => Array
[0] => 123d
[1] => 123e
答案 1 :(得分:0)
此循环给出了预期的结果:
$summary = array();
foreach ($data as $row)
{
if (!isset($summary[$row['make']]))
{
$summary[$row['make']][] = array(
'model' => $row['model'],
'skus' => array($row['sku'])
);
}
else
{
$modelExist = false;
foreach ($summary[$row['make']] as $i => $make)
{
if ($make['model'] == $row['model'])
{
$summary[$row['make']][$i]['skus'][] = $row['sku'];
$modelExist = true;
break;
}
}
if (!$modelExist)
{
$summary[$row['make']][] = array(
'model' => $row['model'],
'skus' => array($row['sku'])
);
}
}
}