读取二维数组的键值

3

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

array(3) {

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

["services:"]=> array(4) { [0]=> string(9) "orange" [1]=> string(5) "demo3" [2]=> string(5) "demo4" [3]=> string(5) "demo1" }

["essai:"]=> array(2) { [0]=> string(6) "sd" } }

我尝试读取这些名称:poste5servicesessai

如果我使用以下代码:

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

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

我有:Array()

但如果我使用:

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

我有 poste5servicesessai

我尝试使用这个循环 foreach ($this->aliasRead as $key => $value){,因为我在之后还有其他处理。如何在此循环中收集我的第一个循环的键 $key


我必须承认,我有些难以理解你的问题。在编程中,如果你需要收集某些东西,通常会将其存储到一个变量中。然而,我看不出你在这里使用了变量。所以我有点困惑你遇到了什么障碍。 - hakre
你是对的,我改正了 :) 但我只是想听听一些意见和解释 ;) - mpgn
3个回答

1
试试这个:
$keys = array_keys($this->aliasRead);
print_r($keys);

或者

$keys = array();
foreach ($this->aliasRead as $key => $value){
 $keys[] = $key;
}

1

这是因为您试图echo一个数组。这将始终给出字符串"Array"。如果您想查看数组的内容,请尝试

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

顺便说一下,在您发布的foreach语句中,$this->aliasRead[$key]将等于$value。因此,这也可以起作用:
var_dump(array_keys($value));

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。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接