PHP - 从数组中获取元素的索引

时间:2010-09-21 21:30:05

标签: php arrays field

当我遍历数组时,如何获取当前元素编号?

我知道count(),但我希望有一个内置函数来获取当前字段索引,而不必添加额外的计数器变量。

像这样:

foreach($array as $key => value)
  if(index($key) == count($array) ....

7 个答案:

答案 0 :(得分:47)

您应该使用key()功能。

key($array)

应返回当前密钥。

如果您需要当前密钥的位置:

array_search($key, array_keys($array));

答案 1 :(得分:11)

PHP数组都是整数索引和字符串索引。你甚至可以混合它们:

array('red', 'green', 'white', 'color3'=>'blue', 3=>'yellow');

您希望索引对于值'blue'是什么?是3吗?但这实际上是值'yellow'的索引,因此这将是一种歧义。

另一个解决方案是将数组强制转换为整数索引的值列表。

foreach (array_values($array) as $i => $value) {
  echo "$i: $value\n";
}

输出:

0: red
1: green
2: white
3: blue
4: yellow

答案 2 :(得分:4)

foreach() {
    $i++;
    if(index($key) == $i){}
    //
}

答案 3 :(得分:0)

function Index($index) {
    $Count = count($YOUR_ARRAY);
    if ($index <= $Count) {
        $Keys = array_keys($YOUR_ARRAY);
        $Value = array_values($YOUR_ARRAY);
        return $Keys[$index] . ' = ' . $Value[$index];
    } else {
        return "Out of the ring";
    }
}

echo 'Index : ' . Index(0);

替换($ YOUR_ARRAY)

答案 4 :(得分:0)

我最近不得不自己解决这个问题,最终得到了@Zahymaka的答案启发的解决方案,但解决了数组的2x循环问题。

您可以做的是按照所有键的存在顺序创建一个数组,然后循环遍历。

        $keys=array_keys($items);
        foreach($keys as $index=>$key){
                    echo "position: $index".PHP_EOL."item: ".PHP_EOL;
                    var_dump($items[$key]);
                    ...
        }

PS:我知道这对聚会来说很晚,但是由于我发现自己正在寻找,所以这可能对其他人有帮助

答案 5 :(得分:-2)

无法获得您真正想要的位置 对于关联数组,要确定最后一次迭代,您可以使用已经提到的计数器变量,或者首先确定最后一项的键:

end($array);
$last = key($array);
foreach($array as $key => value)
  if($key == $last) ....

答案 6 :(得分:-2)

当元素是关联的时,数组不包含索引。 php中的数组可以包含这样的混合值:

$var = array("apple", "banana", "foo" => "grape", "carrot", "bar" => "donkey");   
print_r($var);

给你:

Array
(
    [0] => apple
    [1] => banana
    [foo] => grape
    [2] => carrot
    [bar] => donkey
)

由于您需要关联数组中的索引值,您想要实现什么?