2012-06-28 2 views
0

Я читал PHP для абсолютных новичков. Книга приносит мне привычку к некоторым вещам, но на самом деле это не объясняет, как и почему все это работает.ПОЧЕМУ это работает? PHP foreach многомерные массивы

Может кто-нибудь порекомендует книгу/курс, который не только покажет мне, но и почему?

Foe пример:

$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? Могу ли я назвать, что все, что я хотел?

+0

Я немного переформатировал код, чтобы облегчить его просмотр. Элементы в левой части '=>' являются ключами, справа - значениями - true на всех уровнях вложенного массива. Таким образом, значение может быть массивом, а также значением строки/числа. – halfer

ответ

3

Просто быстрый просмотр documentation on foreach ответил бы на этот вопрос.

Первый foreach перебирает все элементы массива $people. Каждый ключ массива - это $name, а значение (массив второго уровня) - $person.

Затем во втором цикле атрибут foreach person, тип атрибута - $key, а значение этого атрибута - $value.

Пожалуйста, прочитайте эту ручную ссылку, которую я только что дал, она объясняет это намного лучше меня!

0

Что касается книги/курса, то лучшее, что я использовал, это самообучение и веб-ресурсы. У php.net есть документация для всего, и этой методологии было более чем достаточно, чтобы получить меня через различные профессиональные настройки. Это включает, конечно, такие вещи, как публикация в stackoverflow. У меня никогда не было необходимости покупать книгу или проходить курс. Разумеется, это может помочь, но я не знаю ни одного конкретного решения для магических пулей.

В вашем примере PHP не требует, чтобы переменные, используемые в цикле foreach, были объявлены в другом месте в первую очередь. Первая переменная в цикле foreach, people в вашем примере, - это массив, который нужно перебрать. Затем у вас есть ключевое слово as, а затем переменная, которая будет использоваться внутри цикла для каждой записи в массиве. Если вы хотите, вы можете указать эту переменную как key => value вместо value.

Прочитайте документацию по PHP. Задавайте вопросы, когда вы не понимаете.

0

Ключ - это часть «Джейсон», значение - это массив, который вы кладете внутри него. Кроме того, внутри массива Value у вас есть $ key и $ value 'gender' и 'male' соответственно.

Цикл Foreach позволяет получить доступ к каждому массиву начального уровня, будучи частями «Jason», «Carly», предоставляя вам доступ к каждому значению внутри этих ключей. В этом случае вы передаете другой массив, поэтому вложенный цикл foreach присваивает каждому из этих значений значение $ key => $.

Что касается чтения, найдите Google для «Многомерного массива Tutorial PHP», и вы найдете много ресурсов для чтения. Вот как я узнал больше о массивах M-D.

Удачи, надеюсь, это поможет!

+0

Спасибо, я буду искать учебник. – Ismaiah

+0

Пожалуйста, убедитесь, что вы публикуете сообщения, которые вы считаете полезными, и обязательно отметьте правильный ответ, если найдете его лучшим (правильным) ответом на ваш вопрос, чтобы другие люди могли легко найти ответ. – Cody

0

начиная от задней к передней:

Может я назвал, что-нибудь еще я хотел?

Да вы могли бы иметь, так же, как и $key$value

Где $ человек пришел?

$person пришел из $people, поясняется ниже:

$people as $name => $person 

В основном это говорит взять текущую запись $people и сохранить ключ (Джейсон в первой записи) в переменной $name

и сохранить его значение (array('gender'=> 'male', 'hair'=> 'brown') в первом ряду) в качестве $person

Почему я использую $ key и $ value? Что они делают?

$key и $value можно назвать что угодно, пока это правильное имя переменной, а второй foreach цикл действует таким же, как первый, за исключением того, что вместо «Jason» быть ключ, «пол» и " волосы «ключи, хранящиеся в $key и их значение„мужской“и„коричневые“, хранится в $value соответственно

т.е. $person записи 1,„Jason“, первый $key из $person („Jason“) являются» пол », а значение этого ключа -« мужчина », которое равно $value

+0

Спасибо. Лампочка. Так оно и было! – Ismaiah

Смежные вопросы