Оператор Foreach для смешивания типа контента в презентации

У меня есть новостная лента, где я хотел бы показать смешанный контент, который содержит три различных типа элементов. Допустим, это сообщения в блоге (тип 1), реклама (тип 2) и статьи (тип 3).

Я извлекаю данные для каждого типа элемента, который представляет собой массив, содержащий разные данные об элементе (например, автор, текст, дата и т. Д.).

Итак, у меня есть массив1, массив2, массив3.

Я хотел бы знать, как я могу смешать три внутри оператора foreach, чтобы они отображались в смешанной последовательности, то есть снова type1, type2, type3, в отличие от отображения всех элементов типа 1, а затем всех элементов типа 2 и так далее.

Я сделал:

$contentArray = array(

0 => $array1,
1 => $array2,
2 => $array3
);
foreach($contentArray  as $itemType){
if($itemType == $array1){
//display template 1
}elseif($itemType == $array2)
//display template 2
}else{
//display template 2
}

Однако сначала отображаются все данные массива1, затем массив2 и т. Д.

Как структурировать оператор foreach, чтобы содержимое было смешанным?

0

Решение

При переборе массива существует индекс — при условии, что индексы массивов соответствуют от массива к массиву, вы можете попробовать что-то вроде: —

<?php
foreach( $array1 as $index => $value ){
echo $value .' '.$array2[ $index ]. ' '. $array3[ $index ];
}
?>
0

Другие решения

Если вы хотите случайные значения, вы можете попробовать следующий код:

$array1 =  array('1' => 'item1' , '2' => 'item2', '3' => 'item3');
$array2 =  array('1' => 'item1' , '2' => 'item2', '3' => 'item3');
$array3 =  array('1' => 'item1' , '2' => 'item2', '3' => 'item3');

foreach( $array1 as $index => $value ){
$a = array(1,2,3);
shuffle($a);
echo $array1[$a[0]].' '.$array2[$a[1]].' '.$array3[$a[2]];
}
0

По вопросам рекламы [email protected]