MEM*_*MEM 25 php iteration foreach
想知道在foreach循环上获得第一次迭代的好方法是什么.我想在第一次迭代时做一些不同的事情.
在这些情况下,条件是我们的最佳选择吗?
pok*_*oke 72
是的,如果你不能以不同的方式浏览对象(正常的循环),在这种情况下只需使用条件:
$first = true;
foreach ( $obj as $value )
{
if ( $first )
{
// do something
$first = false;
}
else
{
// do something
}
// do something
}
Run Code Online (Sandbox Code Playgroud)
Kli*_*nky 35
更多的优雅者:
foreach($array as $index => $value) {
if ($index == 0) {
echo $array[$index];
}
}
Run Code Online (Sandbox Code Playgroud)
该示例仅在您使用PHP的内置数组追加功能/功能或以适当的数字顺序手动指定键时才有效.
这里的方法与此处列出的其他方法不同,它应该通过任何PHP数组的自然顺序工作.
$first = array_shift($array);
//do stuff with $first
foreach($array as $elem) {
//do stuff with rest of array elements
}
array_unshift($array, $first); //return first element to top
Run Code Online (Sandbox Code Playgroud)
Rus*_*ias 10
你可以简单地在开头添加一个计数器,如下所示:
$i = 0;
foreach($arr as $a){
if($i == 0) {
//do ze business
}
//the rest
$i++;
}
Run Code Online (Sandbox Code Playgroud)
我在我的搜索结果集中的博客文章中看到了这个解决方案,提出了这篇文章,我觉得它很优雅.虽然处理可能有点沉重.
foreach ($array as $element)
{
if ($element === reset($array))
echo 'FIRST ELEMENT!';
if ($element === end($array))
echo 'LAST ELEMENT!';
}
Run Code Online (Sandbox Code Playgroud)
请注意,帖子上还有一个警告,即只有在数组值唯一时才会有效.如果你的最后一个元素是"世界"而中间的一些随机元素也是"世界",那么最后一个元素将执行两次.
嗯
<?php
$i = 0;
foreach($ar as $sth) {
if($i++ == 0) {
// do something
}
// do something else
}
Run Code Online (Sandbox Code Playgroud)
更优雅。