我有这个代码,显示带有视频文件链接的徽标。我经常上传文件,我想按顺序保持思考。目前它只是按名称顺序附上它们。因此,例如,如果我上传电影并且没有上传具有完全相同名称的照片,那么从那一点开始,任何照片都会显示不匹配的链接。
我想做的是如果名称不匹配则显示临时照片。
我知道你可以做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张照片):
方向1
当它运行时,它会并排显示3张照片,当点击前2张(Movie1.png && Movie2.png)时,您将获得每张照片的正确电影。但是,当您单击“电影4.png”时,您将被带到“Movie3.mp4”。
使用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