Php 如何在多维数组中获取下一个值
我试图从下面的数组中生成一个按“groupName”分组的HTML列表Php 如何在多维数组中获取下一个值,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我试图从下面的数组中生成一个按“groupName”分组的HTML列表 array (size=30) 0 => array (size=4) 'groupOrder' => string '1' (length=1) 'groupName' => string 'Class' (length=11) 'txt' => string '............' (length=32) 'ID' => s
array (size=30)
0 =>
array (size=4)
'groupOrder' => string '1' (length=1)
'groupName' => string 'Class' (length=11)
'txt' => string '............' (length=32)
'ID' => string '6' (length=1)
1 =>
array (size=4)
'groupOrder' => string '1' (length=1)
'groupName' => string 'Size' (length=11)
'txt' => string '..................' (length=34)
'ID' => string '6' (length=1)
2 =>
...
所以我想生成类似于这个伪列表的东西:
- 组名
- 文本
- 文本
- 文本
- 下一个组名
- 文本
- 文本
foreach ($datafeed as $val => $row) {
if (($datafeed[$val]['groupName']) == next($datafeed[$val]['groupName'])) {
//same group - do nothing
} else {
echo $datafeed[$val]['groupName'];
}
echo "<li>".$row['txt']. "</li>";
}
foreach($valdatafeed=>$row){
if($datafeed[$val]['groupName'])==next($datafeed[$val]['groupName'])){
//同一组-什么也不做
}否则{
echo$datafeed[$val]['groupName'];
}
回显“”$row['txt']。“ ”;
}
但我得到的错误是“next()期望参数1是数组,字符串是给定的”
我尝试过各种不同的语法,但进展不大。如何比较嵌套数组中的两个值?无论如何,您不应该在
foreach
循环中使用next
,因为您将得到冲突的数组指针移动。只需存储最后一个值:
您误解了函数
next()
的含义:您无法在其中查询数组元素。它操纵与数组本身绑定的内部数组指针,而不是与数组的某些元素绑定。发件人:
另请参见
由于foreach
循环主要取决于数组指针的值,因此弄乱数组指针将破坏循环:您可能会看到循环中的每一个第二个元素,因为在每次迭代中,您的foreach
循环调用一次next()
,然后您自己调用一次
对您来说,最简单的事情可能是使用旧的goodfor
循环:
for ($i = 0; $i < length ($array); $i++)
{
if ($i == 0 || $array[$i] != $array[$i - 1])
echo "New group!\n";
echo $array[$i];
}
($i=0;$i
{
如果($i==0 | |$array[$i]!=$array[$i-1])
回显“新组!\n”;
echo$array[$i];
}
这并不能直接回答您的问题,但您最好重新构造阵列以便对它们进行分组,并且不需要在循环中执行任何逻辑来检查组名。目前,您依靠下一个groupName
来匹配当前的groupName
,但如果它们不是连续的,则不会对它们进行分组
你可以这样做:
$output = array();
foreach ($datafeed as $feed) {
$output[$feed['groupName']][] = $feed;
}
谢谢你。。。非常感谢,这是非常有用的一点,尽管在本例中,我负责提供数据的SQL查询中的分组。
for ($i = 0; $i < length ($array); $i++)
{
if ($i == 0 || $array[$i] != $array[$i - 1])
echo "New group!\n";
echo $array[$i];
}
$output = array();
foreach ($datafeed as $feed) {
$output[$feed['groupName']][] = $feed;
}