为什么它有效? PHP foreach多维数组

时间:2012-06-28 15:53:57

标签: php

我一直在为初学者阅读PHP。这本书让我习惯了一些事情,但它并没有真正解释这些事情的运作方式和原因。

任何人都可以推荐一本书/课程,不仅可以告诉我如何,还有为什么?

敌人的例子:

$people = array(
    'Jason' => array('gender'=> 'male', 'hair'=> 'brown'),
    'carly' => array('gender'=> 'female', 'hair'=>'blonde'),
);
foreach ($people as $name => $person){
    foreach($person as $key => $value){
        echo "$name's $key is $value. <br />";
    }
}

// Output:
// Jason's gender is male. 
// Jason's hair is brown. 
// carly's gender is female.
// carly's hair is blonde.

为什么我使用$key$value?他们在做什么? $person来自哪里?我能说出我想要的任何其他内容吗?

4 个答案:

答案 0 :(得分:3)

只需快速浏览documentation on foreach即可回答此问题。

第一个foreach循环遍历$people数组的所有元素。数组的每个键都是$name,值(第二级数组)是$person

然后在第二个循环中,foreach人的属性,属性的类型是$key,该属性的值是$value

请仔细阅读我刚给出的手册链接,它解释得比我好!

答案 1 :(得分:0)

就书本/课程而言,我使用的最好的东西是自学和网络资源。 php.net提供了所有内容的文档,这种方法已经足以让我通过各种专业设置。当然,这包括在stackoverflow上发布的内容。我从来没有必要买书或上课。当然,这些东西可以提供帮助,但我不知道任何特殊的灵丹妙药解决方案。

在您的示例中,PHP不要求首先在其他地方声明foreach循环中使用的变量。 foreach循环中的第一个变量,在您的示例中为people,是要循环的数组。然后你有关键字as,然后是在数组中每个条目的循环内使用的变量。如果需要,您可以将该变量指定为key => value,而不仅仅是value

阅读PHP文档。当你不理解时提问。

答案 2 :(得分:0)

Key是'Jason'部分,值是你放在其中的数组。此外,在Value数组中,您分别拥有$ key和$ value的'gender'和'male'。

Foreach循环允许您首先访问每个父级别数组,即“Jason”,“Carly”部分,使您可以访问这些键中的每个值。在这种情况下,您将另一个数组传入其中,因此嵌套的foreach循环会将每个值分配给$ key =&gt; $值。

就阅读而言,在Google上搜索“Multi-Dimensional Array Tutorial PHP”,您会发现许多资源需要阅读。这就是我对M-D阵列的更多了解。

祝你好运,我希望这会有所帮助!

答案 3 :(得分:0)

从后到前:

  

我能说出我想要的其他内容吗?

是的,您可以拥有,与$key$value

相同
  

$ person来自哪里?

$person来自$people,解释如下:

$people as $name => $person

这基本上是说当前记录$people并将密钥(Jason在第一条记录中)存储在变量$name

并将其值(array('gender'=> 'male', 'hair'=> 'brown')存储在第一行中)保存为$person

  

为什么我使用$ key和$ value?他们做了什么?

$key$value只要是有效的变量名就可以命名,第二个foreach循环与第一个循环相同,只是代替'Jason'作为关键,“性别”和“头发”是关键,存储在$key中,其值“男性”和“棕色”分别存储在$value

即。记录1的$person是'Jason',$key('Jason')的第一个$person是'性别',该键的值是'male',即{{1} }}