当我遍历数组时,如何获取当前元素编号?
我知道count(),但我希望有一个内置函数来获取当前字段索引,而不必添加额外的计数器变量。
像这样:foreach($array as $key => value)
if(index($key) == count($array) ....
答案 0 :(得分:47)
答案 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
)
由于您需要关联数组中的索引值,您想要实现什么?