想知道在foreach循环上获得第一次迭代的好方法。 我想在第一次迭代时做一些不同的事情。
对于这些案件,条件是我们最好的选择吗?
答案 0 :(得分:70)
是的,如果你不能以不同的方式浏览对象(正常的循环),在这种情况下只需使用条件:
$first = true;
foreach ( $obj as $value )
{
if ( $first )
{
// do something
$first = false;
}
else
{
// do something
}
// do something
}
答案 1 :(得分:34)
更加优雅的人:
foreach($array as $index => $value) {
if ($index == 0) {
echo $array[$index];
}
}
该示例仅在您使用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
答案 2 :(得分:10)
你可以简单地在开头添加一个计数器,如下所示:
$i = 0;
foreach($arr as $a){
if($i == 0) {
//do ze business
}
//the rest
$i++;
}
答案 3 :(得分:6)
我在搜索结果集中的blog post上看到了这个解决方案,提出了这个帖子,我觉得它很优雅。虽然处理可能有点沉重。
foreach ($array as $element)
{
if ($element === reset($array))
echo 'FIRST ELEMENT!';
if ($element === end($array))
echo 'LAST ELEMENT!';
}
请注意,帖子上还有一个警告,即只有在数组值唯一时才会有效。如果你的最后一个元素是“世界”而中间的一些随机元素也是“世界”,那么最后一个元素将执行两次。
答案 4 :(得分:3)
first = true
foreach(...)
if first
do stuff
first = false
答案 5 :(得分:2)
HM
<?php
$i = 0;
foreach($ar as $sth) {
if($i++ == 0) {
// do something
}
// do something else
}
更优雅。
答案 6 :(得分:2)
这也有效
foreach($array as $element) {
if ($element === reset($array))
echo 'FIRST ELEMENT!';
if ($element === end($array))
echo 'LAST ELEMENT!';
}
答案 7 :(得分:1)
这是一个不使用 foreach 循环的例子
<?php
// A sample indexed array
$cities = array("London", "Paris", "New York");
echo $cities[0]; // Outputs: London
// A sample associative array
$fruits = array("a" => "Apple", "b" => "Ball", "c" => "Cat");
echo array_values($fruits)["0"]; // Outputs: Apple
?>
答案 8 :(得分:0)
foreach($array as $element) {
if ($element === reset($array))
echo 'FIRST ELEMENT!';
if ($element === end($array))
echo 'LAST ELEMENT!';
}
答案 9 :(得分:0)
使用 key() native php function? 怎么样,它应该适用于所有类型的数组(索引,关联),因为它总是返回第一个键,无论它是在循环内部还是外部。
$array = array(
'One' => 'value',
'Two' => 'value-2',
'Three' => 'value-3',
);
foreach ( $array as $index => $key ) {
if ( key( $array ) ) {
/**Do something with the first key*/
} else {
/**Do something else*/
}
}
如果它索引数组,你有很多选项可以通过, 对我来说,使用 counter 总是没问题,而且一直都能得到正确的结果。
$array = array(
'One',
'Two',
'Three',
);
$i = 0;
foreach ( $array as $index => $key ) {
if ( $array[ $i ] ) {
/**Do something with the first key*/
} else {
/**Do something else*/
$i++;
}
}
两者都可以在 $key => $value
循环中正常工作,并且只会返回第一个键。
另外,我想补充一点,您始终可以使用数百种不同的方式在脚本中存档目标,这完全取决于您在这种情况下想要使用的方式。