PHP foreach循环显示每个列表项,而只显示一次列表名称 [英] PHP foreach loop show each list item while only showing list name once
本文介绍了PHP foreach循环显示每个列表项,而只显示一次列表名称的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
请比较下面的CURRENT
和DESIRED
结果,以查看我要执行的操作.
Please compare the CURRENT
and DESIRED
results below to see what I'm trying to do.
$arr=array(
array('list_name'=>'Food', 'list_item'=>'bread'),
array('list_name'=>'Food', 'list_item'=>'meat'),
array('list_name'=>'Drinks', 'list_item'=>'water'),
array('list_name'=>'Drinks', 'list_item'=>'milk')
);
foreach($arr as $row){
echo $row['list_name'].'<br>';
echo $row['list_item'].'<br>';
echo '<br>___<br>';
}
当前结果
Food
bread
___
Food
meat
___
Drinks
water
___
Drinks
milk
___
期望结果
Food
1.bread
2.meat
___
Drinks
1.water
2.milk
___
更新
更复杂但更通用的示例:
More complex, yet more generalizable example:
$arr=array(
array('list_name'=>'Food', 'list_item1'=>'bread', 'list_item2' => 2001),
array('list_name'=>'Food', 'list_item1'=>'meat', 'list_item2' => 2002),
array('list_name'=>'Drinks', 'list_item1'=>'water', 'list_item2' => 2003),
array('list_name'=>'Drinks', 'list_item1'=>'milk', 'list_item2' => 2004)
);
期望结果
Food
1.bread, 2001
2.meat, 2002
___
Drinks
1.water, 2003
2.milk, 2004
___
推荐答案
您可以遍历数组并将项目数据添加到新数组(每个list_name
一个).
You could iterate over the array and add the item data to a new array (one for each list_name
).
例如:
$new_array = array();
foreach ($arr as $row)
{
$new_array[$row['list_name']][] = $row['list_item'];
}
foreach ($new_array as $name => $items)
{
echo $name . '<br>';
foreach ($items as $index => $item)
{
echo ($index + 1) . '. ' . $item . '<br>';
}
echo '___<br>';
}
您的更新是
$new_array = array();
foreach ($arr as $row)
{
$name = $row['list_name'];
unset($row['list_name']);
$new_array[$name][] = $row;
}
foreach ($new_array as $name => $items)
{
echo $name . '<br>';
foreach ($items as $index => $item)
{
echo ($index + 1) . '. ' . implode(', ', $item) . '<br>';
}
echo '___<br>';
}
这篇关于PHP foreach循环显示每个列表项,而只显示一次列表名称的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文