猿问

需要重复的复杂 nexted foreach

我想用我的对象做一个 foreach 并在它结束时创建一个带有srcset.


Srcset 应该像这样格式化:


<img srcset="elva-fairy-320w.jpg 320w,

             elva-fairy-480w.jpg 480w,

             elva-fairy-800w.jpg 800w"

     sizes="(max-width: 320px) 280px,

            (max-width: 480px) 440px,

            800px"

     src="elva-fairy-800w.jpg" alt="Elva dressed as a fairy">

https://developer.mozilla.org/en-US/docs/Learn/HTML/Multimedia_and_embedding/Responsive_images


我的输出格式如下:


stdClass Object

(

    [images0] => stdClass Object

        (

            [mediaManagerOrUrl] => 0

            [mediaManagerImagesSubform] => stdClass Object

                (

                    [image] => images/1600x400.jpg

                    [realSize] => 1600

                    [size] => 1200

                    [slot] => 1600

                )


        [urlImagesSubform] => stdClass Object

            (

                [url] => 

                [realSize] => 

                [size] => 

            )


    )


[images1] => stdClass Object

    (

        [mediaManagerOrUrl] => 0

        [mediaManagerImagesSubform] => stdClass Object

            (

                [image] => images/1200x400.jpg

                [realSize] => 1200

                [size] => 1000

                [slot] => 1000

            )


        [urlImagesSubform] => stdClass Object

            (

                [url] => 

                [realSize] => 

                [size] => 

            )


    )


最初我开始使用嵌套的 foreach 语句。然而,我随后意识到我实际上需要拉出所有 4 个图像,并且使用嵌套的 foreaches 一次只允许一个,例如,它正在连续处理所有图像部分。


然后我尝试使用这种语法。


foreach ($params->get('images') as $someImages) {

    echo '<img srcset="' . $someImages->mediaManagerImagesSubform->image . " " . $someImages->mediaManagerImagesSubform->realSize . ',"

            sizes="(max-width:' . $someImages->mediaManagerImagesSubform->size . ') ' . $someImages->mediaManagerImagesSubform->slot . ', 

            src="' . $defaultImage . '" alt="'. $altText . '">';

}

这是非常复杂的,没有奏效。谁能帮助我了解如何实现这一目标?我开始认为我需要以某种方式将数据触发到一个数组中,从而将它从嵌套语法中分离出来并在调用它之前将其完全放在首位。那会更明智吗?


为了使事情更加复杂,我想我需要做一个计数,以便我可以添加逗号,但不能添加到最后一个实例中。


慕桂英546537
浏览 164回答 1
1回答

当年话下

我的最终答案是使用两个不同的 foreach 语句$i,然后使用一个,然后使用我的变量的完整路径。<?php&nbsp;&nbsp; &nbsp; $i = 0;&nbsp; &nbsp; echo '<img srcset="';&nbsp; &nbsp; foreach ($images as $image) {&nbsp; &nbsp; &nbsp; &nbsp; echo $image->mediaManagerImagesSubform->image . " " . $image->mediaManagerImagesSubform->realSize . "w";&nbsp; &nbsp; &nbsp; &nbsp; echo ', ';&nbsp; &nbsp; }&nbsp; &nbsp; echo '" size="';&nbsp; &nbsp; foreach ($images as $image) {&nbsp; &nbsp; &nbsp; &nbsp; echo '(max-width: ';&nbsp; &nbsp; &nbsp; &nbsp; echo $image->mediaManagerImagesSubform->size . 'px) ' . $image->mediaManagerImagesSubform->slot . "px";&nbsp; &nbsp; &nbsp; &nbsp; echo ', ';&nbsp; &nbsp; }&nbsp; &nbsp; echo '" src="' . $defaultImage . '" alt="'. $altText . '">';?>
随时随地看视频慕课网APP
我要回答