Como posso obter o índice de matriz atual em um loop foreach?

Como faço para obter o índice atual em um loop foreach ?

 foreach ($arr as $key => $val) { // How do I get the index? // How do I get the first element in an associative array? } 

No seu código de exemplo, seria apenas $key .

Se você quer saber, por exemplo, se esta é a primeira, segunda ou eu iteração do loop, esta é a sua única opção:

 $i = -1; foreach($arr as $val) { $i++; //$i is now the index. if $i == 0, then this is the first element. ... } 

Claro, isso não significa que $val == $arr[$i] porque a matriz poderia ser uma matriz associativa.

Esta é a resposta mais exaustiva até agora e se livra da necessidade de uma variável $i variando ao redor. É uma combinação das respostas de Kip e Gnarf.

 $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 '
'; }

Espero que ajude alguém.

 $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 é o índice de cada elemento $ array

Você pode obter o valor do índice com isso

 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 } 

O índice atual é o valor de $key . E para a outra questão, você também pode usar:

 current($arr) 

para obter o primeiro elemento de qualquer matriz, assumindo que você não está usando o next() , prev() ou outras funções para alterar o ponteiro interno da matriz.

$key é o índice do elemento de matriz atual e $val é o valor desse elemento de matriz.

O primeiro elemento tem um índice de 0. Portanto, para acessá-lo, use $arr[0]

Para obter o primeiro elemento da matriz, use isso

 $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 

Você também pode obter o primeiro elemento na function array_keys() . Ou array_search() as chaves para o “índice” de uma chave. Se você estiver dentro de um loop foreach , o contador de incrementos simples (sugerido por kip ou cletus) provavelmente é o seu método mais eficiente.

 < ?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) 

Bem, pois este é o primeiro hit do google para este problema:

 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]); }