我试图将四个foreach添加到一个foreach中。我不知道如何,但我这样做。这是一个例子:
$images = "image1,image2,image3";
$covers = "cover1,cover2,cover3";
$titles = "title1,title2,title3";
$albums = "album1,album2,album3";
$images = explode(',', $images);
$covers = explode(',', $covers);
$titles = explode(',', $titles);
$albums = explode(',', $albums);
foreach (array_combine($images, $covers) as $image => $cover) {
foreach (array_combine($titles, $albums) as $title => $album) {
echo "$image - $cover - $title - $album</br>"; }}
但输出是:
image1 - cover1 - title1 - album1
image1 - cover1 - title2 - album2
image1 - cover1 - title3 - album3
image2 - cover2 - title1 - album1
image2 - cover2 - title2 - album2
image2 - cover2 - title3 - album3
image3 - cover3 - title1 - album1
image3 - cover3 - title2 - album2
image3 - cover3 - title3 - album3
需要输出:
image1 - cover1 - title1 - album1
image2 - cover2 - title2 - album2
image3 - cover3 - title3 - album3
答案 0 :(得分:4)
您可以使用array_map()
并遍历所有4个数组,例如
array_map(function($v1, $v2, $v3, $4){
echo "$v1 - $v2 - $v3 - $v4</br>";
}, $images, $covers, $titles, $albums);
请注意,您不需要所有4个数组都具有相同的大小。
答案 1 :(得分:2)
我希望Nathans在上一个问题中回答,他将所有4个值存储在一个对象中并迭代这些对象。
如果你真的需要那些数组,那么为什么不只是使用一个普通的for
循环呢?它适用于你需要索引的情况,它甚至可能更具可读性?
for ($index = 0; $index < count($images); $index++)
{
echo "$images[$index] - $covers[$index] - $titles[$index] - $albums[$index]</br>";
}
P.S。
您可以直接构建数组,而不是爆炸字符串:
$images = array('image1', 'image2', 'image3');
答案 2 :(得分:1)
替代方式
foreach($covers as $key=>$cover){
echo $images[$key]."-".$cover ."-".$titles[$key]."-".$albums[$key]."<br/>";
}