如何在foreach
循环中获取当前索引?
foreach ($arr as $key => $val)
{
// How do I get the index?
// How do I get the first element in an associative array?
}
答案 0 :(得分:53)
在您的示例代码中,它只是$key
。
如果您想知道,例如,如果这是循环的第一次,第二次或第i次次迭代,这是您唯一的选择:
$i = -1;
foreach($arr as $val) {
$i++;
//$i is now the index. if $i == 0, then this is the first element.
...
}
当然,这并不意味着$val == $arr[$i]
,因为数组可能是一个关联数组。
答案 1 :(得分:15)
到目前为止,这是最详尽的答案,并且不需要浮动$i
变量。这是Kip和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 '<br>';
}
希望它有所帮助。
答案 2 :(得分:11)
$i = 0;
foreach ($arr as $key => $val) {
if ($i === 0) {
// first index
}
// current index is $i
$i++;
}
答案 3 :(得分:7)
foreach($array as $key=>$value) {
// do stuff
}
$ key 是每个 $ array 元素的索引
答案 4 :(得分:4)
当前索引是$key
的值。对于另一个问题,您也可以使用:
current($arr)
获取任何数组的第一个元素,假设您没有使用next()
,prev()
或其他函数来更改数组的内部指针。
答案 5 :(得分:3)
您可以使用此
获取索引值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
}
答案 6 :(得分:0)
$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
答案 7 :(得分:0)
您也可以获得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)
答案 8 :(得分:0)
因为这是第一个针对此问题的谷歌搜索:
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]);
}
答案 9 :(得分:0)
基于@ fabien-snauwaert的答案,但如果您不需要原始密钥,则可以简化
$array = array( 'cat' => 'meow', 'dog' => 'woof', 'cow' => 'moo', 'computer' => 'beep' );
foreach( array_values( $array ) as $index=>$value ) {
// display the current index + value
echo $index . ':' . $value;
// 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>';
}