所以,我熟悉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);
}
}
?>
输出:Folder02
、Folder01
。我需要换一种方式。我已经尝试过asort、array_reverse等,但我一定没有正确使用它们。这让我很难过。我从来没有在Python或Javascript中对此进行过精简,除非我真的想有一个升序列表。。。
试试其中一个,一个是递归的,一个不是:
// 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);
我尝试了你的代码并进行了简单的更改,我可以做你想做的事情。
这是我的代码(您的代码副本+修改):
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';
}
}
我的更改:
- 首先将照片目录中的所有文件夹存储在数组变量中
- 其次,根据需要对数组进行排序
- 最后显示您的文件夹(您的工作将得到解决)
您可以通过在php中使用opendir按字母顺序排序和显示目录列表来了解更多信息
感谢
好吧,这是我整晚得到的最好的结果。这能满足我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>";
}
}
}
?>
哇!好的,我把一切都安排好了。DirectoryTerator的随机打印顺序让我很恼火。所以我又回到了地球和丑闻。这些似乎"合乎逻辑"地打印出了一份清单。总之,这部分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在这一切中一直陪伴着我,并提供了很多帮助和帮助。我真的很感激!