Как проверить, является ли указатель массива первым элементом в цикле foreach
В цикле 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
}
}
Я думал, что могу установить bool как $is_first = true;
, а затем, как только цикл будет повторяться один раз, установите bool в false.
Но php имеет много заранее построенных функций, а id скорее использует это... или по-другому...
Весь путь bool выглядит почти как... cheeting: s
Приветствия,
Алекс
Ответы
Ответ 1
Вы можете сделать это, используя "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
Я обычно делаю это:
$isFirst = true;
foreach($array as $key => $value){
if($isFirst){
//Do first stuff
}else{
//Do other stuff
}
$isFirst = false;
}
Работает с любым типом массива, очевидно.
Ответ 3
$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;
}
Ответ 4
вы можете использовать счетчик вместо bool
$i = 0;
foreach ( $array as $key => $value )
if ($i == 0) {
// first
} else {
// last
}
// …
$i++;
}
или извлечь первый элемент
$first = array_shift($array);
и foreach
над массивом остатка;
Ответ 5
$first = array_shift($idx);
foreach($idx as $key => $value){
...
...
...
}
Ответ 6
Вы можете просто поместить операцию в первый элемент перед циклом foreach, удалить элемент и затем ввести цикл foreach для остальных элементов.
Ответ 7
Вот две функции, которые будут определять, является ли ключ массива первым или последним.
Если ключ не указан, он будет считать текущую позицию указателя.
В цикле 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;
}
Ответ 8
Я думаю, что все, что вы хотите сделать, это if ( $key === 0 )