Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将四个foreach合并为一个foreach?_Php_Foreach - Fatal编程技术网

Php 将四个foreach合并为一个foreach?

Php 将四个foreach合并为一个foreach?,php,foreach,Php,Foreach,我正在尝试将4个foreach添加到一个中。我知道如何将2个foreach添加到这样的一个中: foreach (array_combine($images, $covers) as $image => $cover) { foreach (array_combine($images, $covers) as $image => $cover) { foreach (array_combine($titles, $albums) as $title => $album)

我正在尝试将4个foreach添加到一个中。我知道如何将2个foreach添加到这样的一个中:

foreach (array_combine($images, $covers) as $image => $cover) { 
foreach (array_combine($images, $covers) as $image => $cover) {
 foreach (array_combine($titles, $albums) as $title => $album) {
                               echo "$image-$cover-$title-$album"
但是我想添加两个以上的foreach
$titles作为$title
$albums作为$album
。 我不确定是否想要这样:

foreach (array_combine($images, $covers) as $image => $cover) { 
foreach (array_combine($images, $covers) as $image => $cover) {
 foreach (array_combine($titles, $albums) as $title => $album) {
                               echo "$image-$cover-$title-$album"
它显示每个输出的副本。我的意思是输出是

demo-demo1-demo2-demo3demo-demo1-demo2-demo3

只需要输出


demo-demo1-demo2-demo3

将for-each语句放入函数中。然后创建一个调用它的循环

public function loopMe($images, $covers)
{
   foreach (array_combine($images, $covers) as $image => $cover) { 
      $this->loopMe($image,$cover); 
   }
}
看起来您的第二个for循环在第一个for循环中的每个项都被多次调用。因此,您需要确保每个图像封面只调用第二个for循环一次。或者在第二个for循环上设置索引上限。例如,如果要将第一个For循环中的第一项映射到第二个For循环中的第一项,则应使用索引

public function loopMe($images)
{

   for ($i = 0; $i < count($images); $i++) { 
      echo $images[$i] . '-'. $title[$i] . '-' . $cover[$i] . '-'. $album[$i];
   }
}
公共函数loopMe($images)
{
对于($i=0;$i
我认为你从错误的角度看待这个问题。据我所知,您正试图输出某些东西的属性。我认为您要做的是,通过创建一个类并使用一个方法输出对象的内容,从面向对象的方法实现这一点

大概是这样的:

class MyAlbumThing {
    protected $image;
    protected $cover;
    protected $title;
    protected $album;

    public __construct($image, $cover, $title, $album) {
        $this->image = $image;
        $this->cover = $cover;
        $this->title = $title;
        $this->album = $album;
    }

    public getImage() {
        return $this->image;
    }

    public getCover() {
        return $this->cover;
    }

    public getTitle() {
        return $this->title;
    }

    public getAlbum() {
        return $this->album;
    }

    public getString() {
        return $this->image . '-' . 
            $this->cover . '-' . 
            $this->title . '-' . 
            $this->album;
    }
}
然后,可以实例化该类并打印属性:

MyAlbumThing album = new MyAlbumThing("demo", "demo1", "demo2", "demo3");
echo $album->getString();
将输出:

demo-demo1-demo2-demo3
另外,如果你有很多这样的东西,那么你会使用foreach,如下所示:

$myAlbumArray = new array();
$myAlbumArray[] = new MyAlbumThing("demo", "demo1", "demo2", "demo3");
$myAlbumArray[] = new MyAlbumThing("anotherdemo", "anotherdemo1", "anotherdemo2", "anotherdemo3");

$lengthOfArray = sizeof(myAlbumArray);
for ($i = 0; $i < $lengthOfArray; $i++) {
    echo $myAlbumArray[$i]->getString();
}
$myAlbumArray=新数组();
$myAlbumArray[]=新的MyAlbumThing(“演示”、“演示1”、“演示2”、“演示3”);
$myAlbumArray[]=新的MyAlbumThing(“其他演示”、“其他演示1”、“其他演示2”、“其他演示3”);
$lengthOfArray=sizeof(myAlbumArray);
对于($i=0;$i<$lengthOfArray;$i++){
echo$myAlbumArray[$i]>getString();
}
对不起,我的语法有任何错误,我在没有IDE帮助的情况下在浏览器中写的

我强烈建议学习更多关于面向对象PHP编程的知识。在我学习的过程中,我发现这篇文章特别有用:

编辑
如果您确实发现此答案对您的问题有帮助,请将此答案标记为正确。

您是否在所有项目上执行相同的任务?如果你只是想避免写重复的代码,我建议你把代码放在一个函数中,并把所需的数组传递给它。我不确定,并尝试这样做
foreach(array_combine($images,$covers)as$image=>cover){foreach(array_combine)($titles,$albums)作为$title=>$album){
您不确定吗?我们来看看您的代码,当您知道您想要完成什么时,请返回给我。请参阅更新的问题@CalebB@RobertW.GreeneJr.抱歉!您的答案不完整,递归函数需要断点、停止条件,否则将出现错误。无论如何都不起作用,因为
$image
wi将是一个键,而不是数组,并且不能在数组_combine()中使用不管是谁打倒我都很糟糕。你知道我只是想帮忙。wtf。@Thiagaougusoliveira你甚至都不知道引用的是什么。他更新了他的问题,并考虑到当时他掌握的信息很少,我的回答是恰当的。不要只是投赞成票和反对票……投赞成票。