所以,我熟悉Javascript,HTML和Python。我从来没有学过PHP,而且此刻,我正在把我的脑袋撞到我的桌子上,试图找出(对我来说)似乎是如此简单的事情。
我有一个包含图像的文件夹和其他文件夹。
目前,我只是试图将文件夹列表作为链接。我在那里得到了一些,但那时我的输出总是颠倒过来的! Folder01
,Folder02
标记为Folder02
,Folder01
。我不能垮掉'排序我的输出。我一直在寻找不断尝试解决这个问题,但没有什么对我有用。
<?php
function listAlbums(){
if ($handle = opendir('./photos/')) {
while (false !== ($entry = readdir($handle))) {
if ($entry != "." && $entry != "..") {
echo $entry . "<br/>";
}
}
closedir($handle);
}
}
&GT;
此输出:Folder02
,Folder01
。我反过来需要它。我已经尝试了asort,array_reverse等,但我一定不能正确使用它们。这让我很难过。除非我真的想要一个升序列表,否则我甚至不必在Python或Javascript中对此进行细化......
答案 0 :(得分:1)
尝试其中一个,一个是递归的,一个不是:
// Recursive
function listAlbums($path = './photos/')
{
$objects = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path));
foreach($objects as $name => $object) {
ob_start();
echo rtrim($object,".");
$data = ob_get_contents();
ob_end_clean();
$arr[] = $data;
}
return array_unique($arr);
}
// Non-recursive
function getAlbums($path = './photos/')
{
$objects = dir($path);
while (false !== ($entry = $objects->read())) {
if($entry !== '.' && $entry !== '..')
$arr[] = $path.$entry;
}
$objects->close();
return $arr;
}
// I would use __DIR__, but not necessary
$arr = listAlbums();
$arr2 = getAlbums();
// Reverse arrays by key
krsort($arr);
krsort($arr2);
// Show arrays
print_r($arr);
print_r($arr2);
答案 1 :(得分:1)
我尝试使用您的代码并进行简单的更改,然后我就可以执行您想要的操作。
这是我的代码(代码副本+修改):
function listAlbums() {
$files = array();
if ($handle = opendir('./photos/')) {
while (false !== ($entry = readdir($handle))) {
if ($entry != "." && $entry != "..") {
//echo $entry . "<br/>";
$files[] = $entry;
}
}
closedir($handle);
}
// Sort your folder in ascending order
sort($files);
// Sort your folder in descending order [ code commented ]
//rsort($files);
// Check your photos folder has folder or not
if( !empty( $files ) ) {
// Show Your Folders
foreach ($files as $key => $folderName ) {
echo $folderName . "<br/>";
}
} else {
echo 'You have no folder yet in photos directory';
}
}
我的更改:
您可以从sort-and-display-directory-list-alphabetically-using-opendir-in-php
了解更多相关信息由于
答案 2 :(得分:0)
好的,这是我整晚都得到的最好结果。这完成了我所需要的99%。但我仍然无法弄清楚这个该死的问题。此代码将遍历目录列表,并从每个文件夹中的图像创建灯箱库。但是,第一个图像总是数组中的最后一个图像,我无法弄清楚如何让它正常排序!检查第16行,看看我在说什么。
<?php
function listAlbums(){
$directory = "./photos/";
//get all folders in specified directory
$folders = glob($directory . "*");
//get each folder item name
foreach($folders as $folderItem){
//check to see if the folderItem is a folder/directory
if(is_dir($folderItem)){
$count = 0;
foreach (new DirectoryIterator($folderItem) as $fileInfo) {
if($fileInfo->isDot()) continue;
$files = $folderItem."/".$fileInfo->getFilename();
if ($count == 0){ //This is where my issues start. This file ends up being the last one in the list. I need it to be the first.
echo '<a href="'.$files.'" data-lightbox="'.basename($folderItem).' "data-title="'.basename($files).'">'.basename($folderItem).'</a>' . "<br/>";
echo "<div style='display: none'>" . "<br/>";
$count++;
}else{
echo '<a href="'.$files.'" data-lightbox="'.basename($folderItem).' "data-title="'.basename($files).'">'.basename($folderItem).'</a>' . "<br/>";
}
}echo "</div>";
}
}
}
&GT;
答案 3 :(得分:0)
呼!好的,我把一切都搞定了。 DirectoryIterator以随机打印顺序惹恼了我。所以我又回到了glob和scandir。那些似乎“按逻辑”打印出一个列表。总而言之,这一点的PHP将抓取图像文件夹并将每个文件夹转换为自己的灯箱库。每个图库都显示为触发灯箱库的超链接。我对它很满意!
所以这是我的最终代码:
<?php
function listAlbums(){
$directory = "./photos/";
//get all folders in specified directory
$folders = glob($directory . "*");
//get each folder item name
foreach($folders as $folderItem){
//check to see if the folderItem is a folder/directory
if(is_dir($folderItem)){
$count = 0;
$scanDir = scandir($folderItem);
foreach($scanDir as $file){
if ($file === '.' || $file === '..') continue;
$filePath = $folderItem."/".$file;
if ($count == 0){
echo '<a href="'.$filePath.'" data-lightbox="'.basename($folderItem).' "data-title="'.basename($folderItem)." ".strpbrk(basename($filePath, ".jpg"), '-').'">'.basename($folderItem).'</a>' . "<br/>";
echo "<div style='display: none'>" . "<br/>";
$count++;
}else{
echo '<a href="'.$filePath.'" data-lightbox="'.basename($folderItem).' "data-title="'.basename($folderItem)." ".strpbrk(basename($filePath, ".jpg"), '-').'">'.basename($folderItem).'</a>' . "<br/>";
}
}echo "</div>";
}
}
}
特别感谢Rasclatt与我一起承担所有这些并提供了大量的手持和帮助。我真的很感激!