我有这段代码,该代码显示带有视频文件链接的徽标。我经常上传文件,并且想保持秩序。目前,它只是按名称顺序附加它们。因此,例如,如果我上传电影而又没有上传名称完全相同的照片,那么从那时起,所有照片上都将显示不匹配的链接。
我想做的是如果名字不匹配,则显示一张临时照片。
我知道您可以执行类似if(array [1] === array2 [1])的操作,但是文件扩展名将有所不同,因此每次都会返回false。
代码:
<?php
$images = glob('./*.{jpeg,jpg,png}', GLOB_BRACE);
$movies = glob('./*.{mp4,m4v}', GLOB_BRACE);
$movieLink = 0;
foreach($images as $image) {
echo '<a href="' .$movies[$movieLink].'">
<img src="'.$image.'" style="width:300px;height:350px;border:0;">
</a>';
$movieLink++;
}
?>
服务器目录示例(400多个电影和30张照片):
Dir1
运行此命令时,它将并排显示3张照片,单击前2张照片(Movie1.png && Movie2.png),您将被带到正确的电影。但是,当您单击“ Movie 4.png”时,将转到“ Movie3.mp4”。
答案 0 :(得分:2)
使用$header = ['time','machine1','machine2'];
$html = "<table border='1'><tr>";
for($i=0; $i<count($header); $i++){
$html.= "<th>".$header[$i]."</th>";
}
$res = [
array_merge(
array_column($data1, 'reading','time')
),
array_merge(
array_column($data2, 'reading','time')
)
];
for($i=0;$i<count($res)-1;$i++){
foreach($res[$i] as $key => $value){
$html .= '<tr>';
$html .= '<td>'.$key.'</td>';
$html .= '<td>'.$res[$i][$key].'</td>';
$html .= '<td>'.$res[$i+1][$key].'</td>';
$html .= '</tr>';
}
}
echo $html;
构造一个查找数组,以方便验证。查找数组使用“无扩展名”电影文件名作为键,并与图像文件名(具有扩展名)配对。
如果您的项目逻辑指出电影总是比图像多,那么应该循环pathinfo($filename, PATHINFO_FILENAME)
数组。
$movies
以上代码段未经测试,但应该非常接近。如果您不熟悉,$movies = glob('./*.{mp4,m4v}', GLOB_BRACE);
$images = glob('./*.{jpeg,jpg,png}', GLOB_BRACE);
foreach ($images as $image) {
$lookup[pathinfo($image, PATHINFO_FILENAME)] = $image;
}
foreach ($movies as $movie) {
$image = $lookup[pathinfo($movie, PATHINFO_FILENAME)] ?? 'default.jpg';
echo '<a href="' . $movie . '">
<img src="' . $image . '" style="width:300px;height:350px;border:0;">
</a>';
}
是空合并运算符。它基本上说要分配查找值,除非缺少该值,在这种情况下,请使用默认值。
以下是查找数组构造的演示:https://3v4l.org/HJhVR