PHP, "Foreach" использование 3 множеств

Возможный Дубликат:
foreach с тремя переменными добавляют

Если у меня есть 3 множества того же самого размера, действительно ли возможно использовать costruct foreach (), чтобы периодически повторить в то же самое время 3 множества?

напр.

$name contains names

$surname contains surnames

$address contains addresses.

Может foreach брать элементы [1], [2], [.....] в то же самое время, печатать

$name[1], $surname[1], $address[1];

$name[2], $surname[2], $address[2];

и так далее?

4
Пожалуйста, выберите имена переменной мудро для сказочного кода (или пример кода, поскольку вы будете), , 1$ не является именем действительной переменной:)
добавлено автор Ja͢ck, источник

5 ответы

SPL's multipleIterator разработан для точно этой цели

$mi = new MultipleIterator();
$mi->attachIterator(new ArrayIterator($array1));
$mi->attachIterator(new ArrayIterator($array2));
$mi->attachIterator(new ArrayIterator($array3));

foreach ( $mi as $value ) {
    list($name, $surname, $address) = $value;
    echo $name , ' => ' , $surname , ' => ' , $address , PHP_EOL;
}
17
добавлено
Смотрите на дополнительные флаги для конструктора Array - php.net/manual/en/multipleiterator.construct.php = который показывает, как подойти множества числовыми или ассоциативными индексами
добавлено автор Mark Baker, источник
I' m заинтересованный тем же самым вопросом. Между прочим, спасибо, это кажется тем, что я искал.
добавлено автор user1722791, источник
Хороший. Был бы это автоматически обращаться со случаем что множества didn' t содержат то же самое число элементов?
добавлено автор Sean Bright, источник
Можно изменить MultipleIterator конструктор и передать в MultipleIterator:: MIT_NEED_ANY , который заставит петлю выполнять за каждый элемент в самом длинном из множеств. Дефолт MultipleIterator:: MIT_NEED_ALL , который является, будет только бежать, в то время как <у i> каждый множество есть элемент в текущем месте.
добавлено автор Sean Bright, источник
Вероятно, не, из-за конструкции списка. Если бы у одного из множеств было два индекса, я полагаю, что оно потерпело бы неудачу.
добавлено автор David Harris, источник

Принятие они все одинаковые длина:

for ($i = 0; $i < count($names); $i++) {
    echo "{$names[$i]}, {$surnames[$i]}, {$addresses[$i]}";
}
6
добавлено
Самый легкий и логический способ справиться с этой ситуацией использует для , я не видел значительной причины придерживаться foreach в таком случае.
добавлено автор SaidbakR, источник
Я предпочитаю использовать foreach, чтобы иметь больше безопасности
добавлено автор user1722791, источник
хорошо, согласно php.net, foreach предназначался, чтобы использоваться со множествами...
добавлено автор user1722791, источник
Безопасность? Как так?
добавлено автор Sean Bright, источник
Yikes. Хорошо. Удача вам.
добавлено автор Sean Bright, источник
... Как делает использование foreach, предлагают больше безопасности?.....
добавлено автор David Harris, источник
Да, но использование для петли и доступ к индексам функций массива то же самое, и быстрее.
добавлено автор David Harris, источник

Можно сделать это как этот (если у множеств есть те же самые ключи):

foreach ($name as $key => $value) {
    //use $name[$key], $surname[$key], $address[$key]
}

$key contains key in $name array

$value = $name[$key]

4
добавлено
Что такое $value? Я пытался прочитать php.net документацию, но меня couldn' t понимают ту часть.
добавлено автор user1722791, источник
о, спасибо, это wasn' t там в первый раз: P
добавлено автор user1722791, источник
Pleae смотрят на ответ снова.
добавлено автор LukLed, источник

Попробуйте это

foreach($arr1 as $i => $val) {
    var_dump($val, $arr2[$i], $arr3[$i]);
}
1
добавлено

Если ключи массива - то же самое, можно использовать ключ() функция.

But you can pass the key to foreach($array as $key => value()){} This way you can refer to the key by the variable without using a function.

0
добавлено
phpGeeks
phpGeeks
3 620 участник(ов)

Best PHP chat Еще: @dbGeeks - базы данных @phpGeeksJunior - новичкам @moscowProgers - IT Москва @ebanoePhp - весёлый канал о PHP @laravel_pro - Laravel @jobGeeks - вакансии @jsChat - JS Правила: https://t.me/phpGeeks/764859 ДР - 28.03.2016

PHP
PHP
1 309 участник(ов)

Группа про современный PHP. Обсуждаем ООП, TDD, BDD, DDD, SOLID, GRASP и прочие крутые базворды Для ознакомления: https://gist.github.com/mkusher/711bd46f0b62fbae851182e6fb3b1839 Группа PHP для новичков @phpGeeksJunior Вакансии: https://t.me/fordev

PHP — вакансии, поиск работы и аналитика
PHP — вакансии, поиск работы и аналитика
1 251 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению PHP, Laravel, Symfony, Yii и т.д. Здесь всё: full-time, part-time, remote и разовые подработки. См. также: @qa_jobs, @devops_jobs, @javascript_jobs, @nodejs_jobs, @uiux_jobs, @products_jobs

phpGeeksJunior
phpGeeksJunior
980 участник(ов)

Группа для новичков. Не стесняйтесь задавать вопросы по php. Не флудить!!!! Правила и полезные ссылки https://gist.github.com/exileed/a53dd0617b35a705ff44b38c8028e6a5 Бест от пхпгикс https://t.me/best_of_phpgeeks

phpclub.ru
phpclub.ru
872 участник(ов)

Официальный чат phpclub.ru - остерегайтесь подделок #rules Правила группы - уважайте друг друга. Скриншоты -> ссылками. Код -> pastebin.com. Вакансии строго -> https://goo.gl/4bNxym, в чат ссылку. За рекламу и мат - БАН!

Devall | PHP
Devall | PHP
272 участник(ов)

Пристанище для восходящих звёзд разработки, которые перейдут на более адекватные языки. http://combot.org/chat/-1001014863761 Инвайт: j.mp/devallphp