在php中显示3种图像的逻辑问题
我制作了一个网站,人们可以发布图片,该网站通过foreach和for循环自动显示每一张图片。我制作了一个网站,在底部显示旧图片,在顶部显示新图片,如instagram或facebook。该网站只对png和jpg类型的图片进行了完美的处理,但我添加了jpeg,现在它不起作用,如果添加了新的jpeg,我们不会看到以前发布过的任何图片。要使用w3school方式上传图片im,请执行以下操作: 这是我做的:在php中显示3种图像的逻辑问题,php,file,display,Php,File,Display,我制作了一个网站,人们可以发布图片,该网站通过foreach和for循环自动显示每一张图片。我制作了一个网站,在底部显示旧图片,在顶部显示新图片,如instagram或facebook。该网站只对png和jpg类型的图片进行了完美的处理,但我添加了jpeg,现在它不起作用,如果添加了新的jpeg,我们不会看到以前发布过的任何图片。要使用w3school方式上传图片im,请执行以下操作: 这是我做的: <?php // filename = photo/NAME.png
<?php
// filename = photo/NAME.png
foreach (glob("photo/*.{jpg,png,jpeg}", GLOB_BRACE) as $filename)
{
$numberPhoto++;
}
echo "<script>console.log('Il y a $numberPhoto images');</script>";
for ($i = $numberPhoto; $i > 0; $i--)
{
$filePath = "photo/$i.png";
if (file_exists($filePath))
{
echo "<script>console.log('+1 img et cest $i.png');</script>
<div class='imgContainer'>
<hr class='leftrow'>
<div class='img'>
<img class='theImg' src='$filePath'>
<a href='$filePath' download='$filePath'>
<button class='btn'><i class='fa fa-download' alt=''></i> Télécharger</button>
</a>
<hr class='botrow'>
</div>
<hr class='rightrow'>
</div>
<script>console.log('Image $i.png ajouté');</script>
";
break;
}
$filePath = "photo/$i.jpg";
if (file_exists($filePath)){
echo "<script>console.log('+1 img et cest $i.jpg');</script>
<div class='imgContainer'>
<hr class='leftrow'>
<div class='img'>
<img src='$filePath'>
<a href='$filePath' download='$filePath'>
<button class='btn'><i class='fa fa-download' alt=''></i> Télécharger</button>
</a>
<hr class='botrow'>
</div>
<hr class='rightrow'>
</div>
<script>console.log('Image $i.jpg ajouté');</script>
";
}
else{
$filePath = "photo/$i.jpeg";
echo "<script>console.log('+1 img et cest $i.jpeg');</script>
<div class='imgContainer'>
<hr class='leftrow'>
<div class='img'>
<img src='$filePath'>
<a href='$filePath' download='$filePath'>
<button class='btn'><i class='fa fa-download' alt=''></i> Télécharger</button>
</a>
<hr class='botrow'>
</div>
<hr class='rightrow'>
</div>
<script>console.log('Image $i.jpeg ajouté');</script>
";
}
}
?>
我也试过这个
if (file_exists($filePath))
{
// png
}
else if (!file_exists($filePath))
{
// jpg
}
else
{
// jpg
}
还有很多我不记得的事情
当我试图解决这个问题时,我的大脑就像冻僵了一样。我真的不知道该怎么做才能解决这个问题。首先,你可能需要以一种高效和可重用的方式重新构造代码。 我已成功修复了您的代码,但没有再次重复代码,请尝试:
<?php
// filename = photo/NAME.png
$photos = glob("photo/*.{jpg,png,jpeg}", GLOB_BRACE);
// to sort by modified date
usort($photos, function($a,$b){return filemtime($b) - filemtime($a);});
$numberPhoto = count($photos);
foreach ($photos as $photo) {
$extension = pathinfo($photo, PATHINFO_EXTENSION);
echo $extension;
switch($extension){
case 'jpg':
$filePath = $photo; // do your logic for each type if you want
break;
case 'png':
$filePath = $photo; // do your logic for each type if you want
break;
case 'jpeg':
$filePath = $photo; // do your logic for each type if you want
break;
default:
$filePath = $photo; // do your logic for each type if you want
}
echo "<script>console.log('+1 img et cest '" . $filePath . ");</script>
<div class='imgContainer'>
<hr class='leftrow'>
<div class='img'>
<img class='theImg' src='$filePath'>
<a href='$filePath' download='$filePath'>
<button class='btn'><i class='fa fa-download' alt=''></i> Télécharger</button>
</a>
<hr class='botrow'>
</div>
<hr class='rightrow'>
</div>
<script>console.log('Image '" . $filePath . " ajouté');</script>
";
}
?>
Thx这是可行的,但这段代码不会像instagram一样,在页面底部以较旧的顺序显示,在顶部以新的顺序显示,您能解释一下开关中的默认值吗?我真的不明白它有什么用处。你可以通过在glob
行之后添加这一行,按modified\u日期进行排序:usort($photos,function($a,$b){return filemtime($a)-filemtime($b);})代码>$photos=glob(“photo/.{jpg,png,jpeg}”,glob_括号);usort($photos,function($a,$b){returnfilemtime($a)-filemtime($b);})$numberPhoto=计数($photo);我做了这个,但它仍然不起作用,我可以像以前那样简单地做一个fror循环,通过哪个标志反向计数,你想对它和asc或desc排序吗?我现在按desc顺序用modified_date
对它排序,请检查
<?php
// filename = photo/NAME.png
$photos = glob("photo/*.{jpg,png,jpeg}", GLOB_BRACE);
// to sort by modified date
usort($photos, function($a,$b){return filemtime($b) - filemtime($a);});
$numberPhoto = count($photos);
foreach ($photos as $photo) {
$extension = pathinfo($photo, PATHINFO_EXTENSION);
echo $extension;
switch($extension){
case 'jpg':
$filePath = $photo; // do your logic for each type if you want
break;
case 'png':
$filePath = $photo; // do your logic for each type if you want
break;
case 'jpeg':
$filePath = $photo; // do your logic for each type if you want
break;
default:
$filePath = $photo; // do your logic for each type if you want
}
echo "<script>console.log('+1 img et cest '" . $filePath . ");</script>
<div class='imgContainer'>
<hr class='leftrow'>
<div class='img'>
<img class='theImg' src='$filePath'>
<a href='$filePath' download='$filePath'>
<button class='btn'><i class='fa fa-download' alt=''></i> Télécharger</button>
</a>
<hr class='botrow'>
</div>
<hr class='rightrow'>
</div>
<script>console.log('Image '" . $filePath . " ajouté');</script>
";
}
?>