Цикл PHP Foreach, взаимодействующий по одному элементу? - PullRequest
1 голос
/ 28 февраля 2012

Может кто-нибудь объяснить, что это делает, пожалуйста?

foreach($_POST['Detail'] as $i_Detail => &$a_Detail)
{
    ...
}

Конечно, я получаю принцип foreach, но мне кажется, что он пытается перебрать один элемент массива!

Ответы [ 3 ]

4 голосов
/ 28 февраля 2012

Сам элемент может быть массивом.

Редактировать: Кроме того, вы передаете значение, сохраненное в массиве, по ссылке, поэтому что бы вы ни делали, $a_detail в цикле фактически изменит значение в массиве, который он представляет.

3 голосов
/ 28 февраля 2012

с html-входами вы можете передавать массивы в php,

<input name="Detail[a]" />
<input name="Detail[b]" />
1 голос
/ 28 февраля 2012

Итак, что на самом деле здесь происходит, так это цикл foreach, который вводит ключ и значение в цикл. Если мы предположим, что переменная $_POST['detail'] является массивом, который выглядит следующим образом:

$_POST['detail']['name'] = 'Joe';
$_POST['detail']['last'] = 'Smith';

Когда вызывается цикл foreach,

foreach($_POST['Detail'] as $i_Detail => &$a_Detail)

$i_Detail - ключ массива. Итак, в этом случае на первом проходе это будет имя, а на следующем проходе оно будет последним. $a_Detail - это значение массива в этом ключе - поэтому первым проходом будет Джо, последним проходом будет Смит.

Обычно вы видите, что это обозначено как foreach($item as $key=>$value) - что определенно дает лучшее представление о том, что там происходит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...