2016-05-18 2 views
-2

Мне интересно, как в PHP я бы передал несколько массивов в каждый цикл.PHP Передача нескольких значений функции foreach

Например, в следующем случае я хотел бы передать оба значения $array1 и $array2 для каждого цикла, вместо того чтобы иметь для каждого цикла два раза.

$array1 = somestring; 
$array2 = someotherstring; 

foreach ($array1 as $vals) { 
    //do something cool 
} 

Редактировать: Чтобы уточнить, я знаю, что объявления массива недопустимы. Это просто местозаполнитель. Это не заслуживает ниспроверки. Я хочу запустить весь цикл foreach с помощью $ array1, а затем запустить его снова с помощью $ array2.

+0

'$ arrayForEach = array_merge ($ array1, $ array2);' – Tyr

+1

На этот вопрос нельзя ответить без дополнительной информации. Хорошо, что вы хотите обрабатывать оба массива внутри одного цикла. Но вы должны будете сказать нам, что это должно быть обработано. Вы хотите одну итерацию по элементам обоих массивов? Или отдельные итерации по обеим массивам? Или ... – arkascha

ответ

0
$array3 = array_merge($array1, $array2); 
foreach ($array3 as $vals) { 
    // do your coolness 
} 
+0

, если вам не нужен $ array3 для чего-то еще: 'foreach (array_merge ($ array1, $ array2) as $ vals) {' –

+0

Вы не можете 'array_merge()' две строки ... – arkascha

0

Вы можете вид почтовый два индексных массивов с array_map(null, $array1, $array2). Таким образом у вас будет список tuples, где первый элемент будет от $array1, а второй - от $array2. Вы можете перебирать этот список и получать доступ к элементам массивов на одной итерации.

$array1 = [1, 2, 3]; 
$array2 = [1, 2, 3]; 

$zip = array_map(null, $array1, $array2); 

foreach ($zip as $tuple) { 
    echo $tuple[0], '-', $tuple[1], PHP_EOL; 
} 

Адрес demo.

Имейте в виду, что ваши массивы (в данном случае списки) должны быть такой же длины. Другой мудрый вы в конечном итоге сломал tuples, один из элементов которого будет null.

+0

Здравствуйте, ваш ответ не совсем то, что я имел в виду, но я не уточнил в своем первоначальном вопросе. То, что я хотел сделать, это запустить весь цикл foreach с array1, а затем снова запустить весь цикл с помощью array2. Прошу прощения за то, что я не понимаю. – djames

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