【问题标题】:Display different data every other two cols每隔两列显示不同的数据
【发布时间】:2018-11-12 08:44:40
【问题描述】:

我将这些图像和视频数据存储在数组中。

Array
(
    [0] => Array
        (
            [id] => 81
            [media] => Array
                (
                    [0] => Array
                        (
                            [file_type] => 2
                            [file_name] => accident-damaged-car-5be9304f2b429.png
                        )

                    [1] => Array
                        (
                            [file_type] => 2
                            [file_name] => xdamaged-car-640x360jpgpagespeedicsgjldiwfmp-5be930504fb14.jpg
                        )

                    [2] => Array
                        (
                            [file_type] => 1
                            [file_name] => broken-car-5be9305055d13.mp4
                        )

                )

        )

    [0] => Array
        (
            [id] => 82
            [media] => Array
                (
                    [0] => Array
                        (
                            [file_type] => 2
                            [file_name] => accident-damaged-car-5be9304f2b340.png
                        )

                    [1] => Array
                        (
                            [file_type] => 1
                            [file_name] => broken-car-5be9305055d14.mp4
                        )

                )
        )
)

所以我想每隔 2 列间歇地显示图像和视频。例如,前 2 列显示图像,后 2 列显示视频,后 2 列显示图像,依此类推。输出应该如下图所示。

我将搜索数据并通过他们的file_type (1=video, 2=image) 过滤它们。但是我应该如何在图片中显示它们呢?

P.S : 每个数据都有多个图像和视频,但我只想在显示它们时显示 1 个图像或 1 个视频。

【问题讨论】:

  • 所以你希望第一张图片来自id=81,第二张来自id=82,然后是来自id=83id=84的2个视频等等,或者你只想要所有的图片和视频成对而不关心顺序?
  • @DavidWinder 是的,正确。第一张图片来自 id=81,第二张来自 id=82,然后 2 个视频来自 id=83 和 id=84,依此类推

标签: php arrays intervals


【解决方案1】:

您可以遍历您的数组并根据您当前位置的Mod 4 每次选择媒体类型。

考虑以下代码:

function getFileNameByType($files, $type) {
    foreach($files as $file)
        if ($file["file_type"] == $type)
            return $file["file_name"];
}

$ans = array();
foreach($arr as $elem){
    $type = (count($ans) % 4 == 0 || count($ans) % 4 == 1) ? "2" : "1";
    $ans[] = getFileNameByType($elem["media"] ,$type);
}

如果你把它作为输入:

$arr = array(array("id"=>82, "media"=>array(array("file_type"=>2, "file_name"=> "aaa.png"), array("file_type"=>2, "file_name"=> "bbb.jpg"), array("file_type"=>1, "file_name"=> "ccc.mp4"))), array("id"=>83, "media"=>array(array("file_type"=>2, "file_name"=> "ddd.png"), array("file_type"=>1, "file_name"=> "eee.mp4"))), array("id"=>84, "media"=>array(array("file_type"=>2, "file_name"=> "fff.png"), array("file_type"=>2, "file_name"=> "ggg.jpg"), array("file_type"=>1, "file_name"=> "hhh.mp4"))), array("id"=>85, "media"=>array(array("file_type"=>2, "file_name"=> "iii.png"), array("file_type"=>2, "file_name"=> "jjj.jpg"), array("file_type"=>1, "file_name"=> "kkk.mp4"))));

你会得到输出:

Array
(
    [0] => aaa.png
    [1] => ddd.png
    [2] => hhh.mp4
    [3] => kkk.mp4
)

希望有帮助!

【讨论】:

  • 你太棒了!它真的可以帮助我节省时间。非常感谢:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多