这个问题只是为了好玩而出于好奇。
编辑:我的问题不同于 How to find the foreach index 因为在我的情况下,$ key已经是非数字值。
如果没有在foreach范围内增加foreach的变量,就像通常的$ i一样,有没有办法在$ key已经命名时获取项目的索引?
例子:
$myNumericIndexArray = ('foo', 'bar', 'go', 'habs');
foreach($myNumericIndexArray as $key => $value){
//Here $key will be 0 -> 1 -> 2 -> 3
}
现在,如果我有:
$myNamedIndexArray = ('foo' => 'bar', 'go' => 'habs', 'CSGO_bestTeam' => 'fnatic');
foreach($myNamedIndexArray as $key => $value){
//Here $key will be foo -> go -> CSGO_bestTeam
}
我可以,而不必:
$i=0;
foreach($myNamedIndexArray as $key => $value){
//Here $key will be foo -> go -> CSGO_bestTeam
$i++;
}
访问指定数组的索引。在foreach声明中声明的东西,如for或者$ key的状态?
有一个好的。
答案 0 :(得分:4)
如果你真的想要关联数组的索引数组而不是试试这个:
$myNamedIndexArray = ['foo' => 'bar', 'go' => 'habs', 'CSGO_bestTeam' => 'fnatic'];
$keys = array_keys($myNamedIndexArray);
foreach($myNamedIndexArray as $key => $value){
echo array_search($key, $keys);
}
答案 1 :(得分:3)
这样的事情:
variables
答案 2 :(得分:3)
我不知道您为什么要在每次循环迭代中执行array_keys()
和array_search()
。只需构建一个参考数组,您仍然可以foreach()
原始数据:
$positions = array_flip(array_keys($myNamedIndexArray));
foreach($myNamedIndexArray as $key => $value){
echo "{$key} => {$value} is position {$positions[$key]}\n";
}
答案 3 :(得分:2)
我尝试这样的事情:
<?php
$myNamedIndexedArray = ['foo' => 'bar', 'go' => 'habs', 'CSGO_bestTeam' => 'fnatic'];
$myNumberIndexedArray = array_keys($myNamedIndexedArray);
foreach($myNumberIndexedArray as $key => $value){
echo $key. " => " . $myNamedIndexedArray[$myNumberIndexedArray[$key]]."<br />";
}
?>
输出将是:
0 => bar
1 => habs
2 => fnatic