如何在foreach循环中获取当前数组索引?

时间:2009-09-20 02:52:55

标签: php syntax foreach

如何在foreach循环中获取当前索引?

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

10 个答案:

答案 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>';
}