显示时复制的照片

时间:2018-04-30 17:09:30

标签: javascript php html arrays

当我上传照片时,第三张将复制并接管第一和第三点。我不知道为什么会发生这个错误,但我相信它是在我添加了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">&nbsp;</div><span class="up_votes">0</span>

                            </div>
                            <div class="voting_btn">
                                <div class="down_button">&nbsp;</div><span class="down_votes">0</span>
                            </div>
                        </div>
                  </div>
            </div>';
    } else {
        continue;
    }
}

echo '</body></html> ';

1 个答案:

答案 0 :(得分:1)

您可能希望在检索特定项目之前致电usort。可能,你得到的第一个元素,在后来的迭代中已经移动了。因此,一个元素被移动到数组的前面,现在因为i = 0已经被传递而从未被选中。将它移出循环可能更好,因为它实际上似乎并不依赖于内部发生的任何事情。

因此,只需尝试在循环前面而不是在循环中移动以下行:

   usort($files, function($a, $b) { 
                return filemtime($a) - filemtime($b); 
                }
    );

如果问题仍然存在,请告诉我们。