3

我尝试读取数组的一些键,例如

数组(3){

["poste5:"]=> array(3) { [0]=> string(7) "APPLE:" [1]=> string(5) "demo1" [2]=> string(5) "demo2" }

["服务:"]=> 数组(4) { [0]=> 字符串(9) "橙色" [1]=> 字符串(5) "demo3" [2]=> 字符串(5) "demo4" [ 3]=> 字符串(5) "demo1" }

["essai:"]=> 数组(2) { [0]=> 字符串(6) "sd" } }

我试着读这个名字:poste5servicesessai

如果我使用:

foreach ($this->aliasRead as $key => $value){

echo array_keys($this->aliasRead[$key]);
}

我有:数组()

但如果我使用:

foreach (array_keys($this->aliasRead) as $key => $value2) {
       echo $value2;
}

我有poste5 , services , essai

我尝试使用这个循环foreach ($this->aliasRead as $key => $value){ 因为我之后有另一个特征。如何在这个循环foreach ($this->aliasRead as $key => $value){中收集我的第一个循环的这个键?

4

3 回答 3

1

尝试这个,

$keys = array_keys($this->aliasRead);
print_r($keys);

或者

$keys = array();
foreach ($this->aliasRead as $key => $value){
 $keys[] = $key;
}
于 2013-06-10T12:06:24.057 回答
1

这是因为你正在尝试echo一个数组。这将始终为您提供字符串“Array”。如果您想查看数组的内容,请尝试

var_dump(array_keys($this->aliasRead[$key]));

顺便说一句,在foreach您发布的声明中,$this->aliasRead[$key]将等于$value。所以这也可以:

var_dump(array_keys($value));
于 2013-06-10T12:06:31.400 回答
1

你已经在这里拥有了你想要的东西:

foreach ($this->aliasRead as $key => $value){
    echo $key; // key of the value in the array
    print_r($value); // value of $this->aliasRead[$key] which in turn is another array
}

编辑:您的第二个循环起作用的原因是因为:array_keys($this->aliasRead[$key])返回一个新数组,其中包含旧数组的键作为其值。所以$myNewArray = array_keys($this->aliasRead[$key])是一样的$myNewArray = array('poste5','services','essai')。所以,当你像这样循环这个新数组时:

foreach ($myNewArray as $key => $value2) {
    echo $value2;
}

$value2包含您的值,它们是您的第一个数组的键,并且$key在循环的每一步之后将是 0、1 和 2。

于 2013-06-10T12:10:28.460 回答