在for循环中它很简单......
for ( $idx = 0 ; $idx < count ( $array ) ; $idx ++ )
{
if ( $idx == 0 )
{
// This is the first element of the array.
}
}
如何在foreach循环中完成这项工作?
有is_first()
之类的功能吗?
我正在寻找类似的东西:
foreach ( $array as $key => $value )
{
if ( /* is the first element */ )
{
// do logic on first element
}
else
{
// all other logic
}
}
我以为我可以像$is_first = true;
那样设置一个bool,然后一旦循环迭代一次,就将bool设置为false。
但是php有很多预先构建的功能,并且使用...或者其他方式...
整个bool方式看起来几乎像是...... cheeting:s
干杯,
亚历
答案 0 :(得分:20)
我通常这样做:
$isFirst = true;
foreach($array as $key => $value){
if($isFirst){
//Do first stuff
}else{
//Do other stuff
}
$isFirst = false;
}
显然适用于任何类型的数组。
答案 1 :(得分:12)
您可以使用“current()”
执行此操作$myArray = array('a', 'b', 'c');
if (current($myArray) == $myArray[0]) {
// We are at the first element
}
文档:http://php.net/manual/en/function.current.php
检索第一个元素的方法:
$myArray[0]
$slice = array_slice($myArray, 0, 1);
$elm = array_pop($slice);
答案 2 :(得分:5)
$myArray = array('a' => 'first', 'b' => 'second', 'c' => 'third');
reset($myArray);
$firstKey = key($myArray);
foreach($myArray as $key => $value) {
if ($key === $firstKey) {
echo "I'm Spartacus" , PHP_EOL;
}
echo $key , " => " , $value , PHP_EOL;
}
答案 3 :(得分:2)
你可以用计数器代替bool
$i = 0;
foreach ( $array as $key => $value )
if ($i == 0) {
// first
} else {
// last
}
// …
$i++;
}
或通过
提取第一个元素$first = array_shift($array);
保留数组和foreach
;
答案 4 :(得分:1)
您可以将操作放在 foreach 循环之前的第一个元素上,删除该元素,然后为其余元素输入 foreach 循环。
答案 5 :(得分:1)
$first = array_shift($idx);
foreach($idx as $key => $value){
...
...
...
}
答案 6 :(得分:0)
这里有两个函数可以检测数组键是第一个还是最后一个。
如果没有提供密钥,它将采用当前指针位置。
在foreach循环中,您需要提供密钥,因为指针不正确。
public static function isFirst($array, $key=null)
{
if($key===null){
$key = key($array);
}
reset($array);
$first = key($array);
return $first === $key;
}
public static function isLast($array, $key=null)
{
if($key===null){
$key = key($array);
}
end($array);
$last = key($array);
return $last === $key;
}