Вопрос по arrays, php – Как использовать несколько массивов в «одном» цикле foreach () [duplicate]

2

This question already has an answer here:

Я пытаюсь отобразить все переменные двух массивов с помощью одного цикла foreach, создающего URL. Некоторые примеры кодирования будут выполнены.

У меня есть это до сих пор:

<?php
foreach($menu_names as $menu_name){
echo "<li><a href='?subj= " .urlencode($subjects["id"]). " '>".$menu_name."</a></li>";
}
?>

Я хочу добавить еще один массив в этом цикле

Покажите нам, что у вас есть John Conde
@JohnConde Проверьте. Я отредактировал мой вопрос yusufiqbalpk
@ Приведите несколько примеров, пожалуйста! yusufiqbalpk
я опубликовал ответ C. Leung
почему бы не использоватьfor() цикл? C. Leung

Ваш Ответ

4   ответа
1

1)

<?php
$First = array('a', 'b', 'c', 'd');
$Second = array('1', '2', '3', '4');

foreach($First as $indx => $value) {
    echo $First[$indx].$Second[$indx];
    echo "<br />";
}
?>

или 2)

<?php
$First = array('a', 'b', 'c', 'd');
$Second = array('1', '2', '3', '4');

for ($indx = 0 ; $indx < count($First); $indx ++) {
  echo $First[$indx] . $Second[$indx];
  echo "<br />";
}
?>
2

exactly вам нужно сделать с массивами и как вам нужно это сделать.

Если ваши массивы имеют одинаковые индексы, и вам нужно использовать один и тот же элемент из каждого массива, вы можете сделать как

foreach ($array1 as $index => $value1) {
    $value2 = $array2[$index];
    // do stuff with $value1 and $value2 here
}

(Хотя в этом случае, особенно если вам часто приходится этим заниматься, вы можете подумать об использовании единого массива объектов или массивов, чтобы данные всегда были вместе и их было проще соединить.)

Или, если массивы содержат элементы одного типа, и вы хотите перебрать оба по порядку, вы можете перебратьarray_merge($array1, $array2), (Если, однако, массивы не имеют числовой индексации, и, в частности, если они имеют одинаковые строковые ключи, один из элементов массивов может заменить другой. См.документы поarray_merge для деталей.)

Есть множество других возможностей, в зависимости от того, как вам нужны элементы. (Вопрос действительно не дает никакой информации по этому вопросу.)

Спасибо за вашу большую помощь yusufiqbalpk
9

у вас есть одинаковое количество элементов в этих двух массивах.

если вы хотите использоватьforeach()тогда массивы должны иметь одинаковый индекс:

foreach ($a as $index => $value)
{
    echo $a[$index] .' '. $b[$index];
}

если массивы имеют числовой индекс, вы можете просто использоватьfor():

for ($i = 0; $i < sizeof($a); $i++)
{
    echo $a[$i] .' '. $b[$i];
}
Обратите внимание, если вы используетеforмассивы тоже должны иметь одинаковые индексы. Вы действительно не получаете много, кроме семантического разделения индекса и избегания высказывания$a[$index] когда у вас уже есть (это$value).
Спасибо, я нуждался в этом. yusufiqbalpk
4

array_combine() объединит ваши 2 массива в один сkey=>value например

foreach(array_combine($a,$b) as $key=>$value) {
    echo $key."<br/>".$value;
}

Похожие вопросы