0

考虑以下数组

$arr1=array('a'=>2,'b'=>22,'c'=>4,'d'=>10)

现在,对于

print_r(array_keys($arr1));

输出是

Array ( [0] => a [1] => b [2] => c [3] => d )  

很好,因为 array_keys 的返回类型是数组。甚至echo array_keys($arr1);给出Array作为输出。

但对于

foreach(array_keys($arr1) as $key)
 {
     echo $key.'<br/>';
  }

输出是abcd有人能解释一下foreach这里是如何工作的,因为我期待以下输出

[a] => 2 
[b] => 22 
[c] => 4 
[d] => 10 

不想要更好的代码来显示我的预期输出。只想知道在这种情况下 foreach 是如何循环的。

4

5 回答 5

2

array_keys($arr1)获取数组键,因此它循环通过 ["a","b","c","d"]。

此外,您的输出print_r(array_keys($arr1))是错误的,因为它输出:

Array
(
    [0] => a
    [1] => b
    [2] => c
    [3] => d
)

不是你写的

我引用你的话:

现在,对于

print_r(array_keys($arr1)); 输出是

数组( [a] => 2 [b] => 22 [c] => 4 [d] => 10 )

这是不正确的

于 2013-04-24T11:21:25.453 回答
0

您可以使用以下语法:

<?php
foreach($arr1 as $key => $values) {
        echo $key . "=>" . $values;
    }
?>
于 2013-04-24T11:19:50.877 回答
0

foreach(array_keys($arr1) as $key)遍历 的键,依次$arr1分配当前键。$key'current' 表示当前迭代的键。

于 2013-04-24T11:19:53.770 回答
0

因为这就是foreach工作原理。由于array_keys返回数组的键 ("a","b",...)array_keys($arr1)与 相同Array("a","b","c","d"),即

Array( [0] => "a", [1] => "b", ... )

由于您想遍历数组中的键和值,您应该简单地使用

foreach($arr1 as $key => $value){
    echo "[{$key}] = {$value}<br/>";
}
于 2013-04-24T11:20:56.677 回答
0

函数 array_keys 返回数组的所有键。为了得到你想要的,你应该使用这样的东西

foreach($arr1 as $key => $value) {
    echo $key . "=>" . $value;
}
于 2013-04-24T11:21:40.410 回答