php - 每隔两列显示不同的数据
问题描述
我将这些图像和视频数据存储在数组中。
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 列显示图像,依此类推。输出应该如下图所示。
我将 foreach 数据并按它们过滤它们file_type (1=video, 2=image)
。但是我应该如何在图片中显示它们?
PS:每个数据都有多个图像和视频,但我只想在显示它们时显示 1 个图像或 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
)
希望有帮助!