Как получить текущий индекс в цикле foreach
?
foreach ($arr as $key => $val) { // How do I get the index? // How do I get the first element in an associative array? }
В вашем примере кода это будет просто $key
.
Если вы хотите узнать, например, если это первая, вторая или итерация цикла, это ваш единственный вариант:
$i = -1; foreach($arr as $val) { $i++; //$i is now the index. if $i == 0, then this is the first element. ... }
Конечно, это не означает, что $val == $arr[$i]
потому что массив может быть ассоциативным массивом.
Это самый исчерпывающий ответ до сих пор и избавляет от необходимости плавающей переменной $i
. Это комбо ответов Кипа и Гнарфа.
$array = array( 'cat' => 'meow', 'dog' => 'woof', 'cow' => 'moo', 'computer' => 'beep' ); foreach( array_keys( $array ) as $index=>$key ) { // display the current index + key + value echo $index . ':' . $key . $array[$key]; // first index if ( $index == 0 ) { echo ' -- This is the first element in the associative array'; } // last index if ( $index == count( $array ) - 1 ) { echo ' -- This is the last element in the associative array'; } echo '<br>'; }
Надеюсь, это поможет кому-то.
$i = 0; foreach ($arr as $key => $val) { if ($i === 0) { // first index } // current index is $i $i++; }
foreach($array as $key=>$value) { // do stuff }
$ key – это индекс каждого элемента $ array
Вы можете получить значение индекса с помощью этого
foreach ($arr as $key => $val) { $key = (int) $key; //With the variable $key you can get access to the current array index //You can use $val[$key] to }
Текущий индекс – это значение $key
. И по другому вопросу вы также можете использовать:
current($arr)
для получения первого элемента любого массива, предполагая, что вы не используете функции next()
, prev()
или другие функции для изменения внутреннего указателя массива.
$key
– это индекс для текущего элемента массива, а $val
– значение этого элемента массива.
Первый элемент имеет индекс 0. Поэтому для доступа к нему используйте $arr[0]
Чтобы получить первый элемент массива, используйте этот
$firstFound = false; foreach($arr as $key=>$val) { if (!$firstFound) $first = $val; else $firstFound = true; // do whatever you want here } // now ($first) has the value of the first element in the array
Вы можете получить первый элемент в функции array_keys()
. Или array_search()
ключи для «индекса» ключа. Если вы находитесь внутри цикла foreach
, простой инкрементный счетчик (предложенный kip или cletus), вероятно, является вашим самым эффективным методом.
<?php $array = array('test', '1', '2'); $keys = array_keys($array); var_dump($keys[0]); // int(0) $array = array('test'=>'something', 'test2'=>'something else'); $keys = array_keys($array); var_dump(array_search("test2", $keys)); // int(1) var_dump(array_search("test3", $keys)); // bool(false)
так как это первый хит Google для этой проблемы:
function mb_tell(&$msg) { if(count($msg) == 0) { return 0; } //prev($msg); $kv = each($msg); if(!prev($msg)) { end($msg); print_r($kv); return ($kv[0]+1); } print_r($kv); return ($kv[0]); }