当我上传照片时,第三张将复制并接管第一和第三点。我不知道为什么会发生这个错误,但我相信它是在我添加了usort代码之后发生的。当我上传图片nr 1时,一切都很好,nr 2,一切都很好,但是nr 3和所有之后将取代第一个和最后一个点。
$files = glob("Opplastetbilder/*.*");
for ($i=0; $i<count($files); $i++) {
$image = $files[$i];
usort($files, function($a, $b) {
return filemtime($a) - filemtime($b);
}
);
$supported_file = array(
'gif',
'jpg',
'jpeg',
'png'
);
$ext = strtolower(pathinfo($image, PATHINFO_EXTENSION));
if (in_array($ext, $supported_file)) {
echo '<div class="gallery">
<a target="_blank" href="'.$image.'">
<img src="'.$image.'" alt="bilde" width="300" height="200">
</a>
<div class="desc">
<div class="voting_wrapper" id="'.$i.'">';
echo '<div class="voting_btn">
<div class="up_button"> </div><span class="up_votes">0</span>
</div>
<div class="voting_btn">
<div class="down_button"> </div><span class="down_votes">0</span>
</div>
</div>
</div>
</div>';
} else {
continue;
}
}
echo '</body></html> ';
答案 0 :(得分:1)
您可能希望在检索特定项目之前致电usort
。可能,你得到的第一个元素,在后来的迭代中已经移动了。因此,一个元素被移动到数组的前面,现在因为i = 0
已经被传递而从未被选中。将它移出循环可能更好,因为它实际上似乎并不依赖于内部发生的任何事情。
因此,只需尝试在循环前面而不是在循环中移动以下行:
usort($files, function($a, $b) {
return filemtime($a) - filemtime($b);
}
);
如果问题仍然存在,请告诉我们。