Как получить текущий индекс массива в цикле foreach?

Как получить текущий индекс в цикле 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]); }