Ключ непрерывного массива в выходных данных цикла foreach - PullRequest
0 голосов
/ 27 декабря 2018

У меня есть два массива (скажем, $ arrayA и $ arrayB) с многочисленными значениями в них.

Я хотел бы заполнить список из 8 делений этими значениями, используя цикл foreach, который имеет всего 4 деления, причем каждый делитель увеличивает инкрементный ключ из своего соответствующего массива.

Надеемся, что следующее должно проиллюстрировать:

foreach ($values as $value) {
    echo
    '<div class="type-a">' . $arrayA[i] . '</div>
    <div class="type-b">' . $arrayB[i] . '</div>
    <div class="type-a">' . $arrayA[i+1] . '</div>
    <div class="type-b">' . $arrayB[i+1] . '</div>';
 }

 <div class="type-a"> A1 </div>
 <div class="type-b"> B1 </div>
 <div class="type-a"> A2 </div>
 <div class="type-b"> B2 </div>
 <div class="type-a"> A3 </div>
 <div class="type-b"> B3 </div>
 <div class="type-a"> A4 </div>
 <div class="type-b"> B4 </div>

Любые предложения будут великолепны!

1 Ответ

0 голосов
/ 27 декабря 2018

После вашего комментария относительно различий в длине вы можете посчитать размер каждого из них, чтобы определить, какой из них больше, а затем перебрать его в качестве основного массива:

<?php
# Make sure each value is an array
$arrayA = (empty($arrayA))? [] : array_values($arrayA);
$arrayB = (empty($arrayB))? [] : array_values($arrayB);
# Determine which array is longer
if(count($arrayA) >= count($arrayB)) {
    $arr_L = $arrayA;
    $arr_S = $arrayB;
}
else {
    $arr_L = $arrayB;
    $arr_S = $arrayA;
}
# Iterate over the larger array
foreach($arr_L as $key => $value): ?>

<!-- Just echo the value here because you are iterating this array -->
<div class="type-a"> <?php echo $value ?> </div>

<!-- Use the current key from this array to fetch the value from the B array -->
<div class="type-b"> <?php echo $arr_S[$key] ?> </div>

<?php endforeach ?>
...