关于php:在命名键时获取foreach数字索引

Get foreach numeric index when keys are named

这个问题只是为了好玩和好奇。

编辑:我的问题与如何查找foreach索引因为在我的例子中,$key已经有了一个非数字值。

与通常的$I一样,如果foreach范围内没有增量的foreach之外的变量,是否有一种方法可以在已经命名$key时获取项的索引?

示例:

1
2
3
4
5
$myNumericIndexArray = ('foo', 'bar', 'go', 'habs');

foreach($myNumericIndexArray as $key => $value){
    //Here $key will be 0 -> 1 -> 2 -> 3
}

现在,如果我有:

1
2
3
4
5
$myNamedIndexArray = ('foo' => 'bar', 'go' => 'habs', 'CSGO_bestTeam' => 'fnatic');

foreach($myNamedIndexArray as $key => $value){
    //Here $key will be foo -> go -> CSGO_bestTeam
}

我可以不必:

1
2
3
4
5
$i=0;
foreach($myNamedIndexArray as $key => $value){
    //Here $key will be foo -> go -> CSGO_bestTeam
    $i++;
}

访问命名数组的索引.forEach声明中声明的内容,比如for或$key的状态?

好好喝一杯。


如果确实需要关联数组的索引数组,请尝试以下操作:

1
2
3
4
5
6
$myNamedIndexArray = ['foo' => 'bar', 'go' => 'habs', 'CSGO_bestTeam' => 'fnatic'];

$keys = array_keys($myNamedIndexArray);
foreach($myNamedIndexArray as $key => $value){
     echo array_search($key, $keys);
}


我不知道您为什么要在每个循环迭代中执行array_keys()array_search()。只需构建一个引用数组,您仍然可以使用cx1(2)原始:

1
2
3
4
5
6
$positions = array_flip(array_keys($myNamedIndexArray));

foreach($myNamedIndexArray as $key => $value){
    echo"{$key} => {$value} is position {$positions[$key]}
"
;
}


像这样:

1
2
3
4
5
6
7
<?php
$myNamedIndexArray = array('foo' => 'bar', 'go' => 'habs', 'CSGO_bestTeam' => 'fnatic');
$numericIndexArray = array_keys($myNamedIndexArray);
foreach($numericIndexArray as $key=>$value){
    echo $key.'</br>'; //here key will be 0 1 2
    echo $value. '</br>';
}


我想试试这个:

1
2
3
4
5
6
7
8
9
10
<?php

    $myNamedIndexedArray = ['foo' => 'bar', 'go' => 'habs', 'CSGO_bestTeam' => 'fnatic'];

    $myNumberIndexedArray = array_keys($myNamedIndexedArray);
    foreach($myNumberIndexedArray as $key => $value){
        echo $key." =>" . $myNamedIndexedArray[$myNumberIndexedArray[$key]]."<br />";
    }

?>

ADN输出为:

1
2
3
0 => bar
1 => habs
2 => fnatic