我想了解一些事情。我有以下功能
dispatch_async(dispatch_get_main_queue()) {
NSApp.activateIgnoringOtherApps(true)
}
我基本上将它传递给根路径并在其中创建一个具有目录结构的数组。
function fillArrayWithFileNodes( DirectoryIterator $dir )
{
$data = array();
foreach ( $dir as $node )
{
if ( $node->isDir() && !$node->isDot() )
{
$data[$node->getFilename()] = $this->fillArrayWithFileNodes( new DirectoryIterator( $node->getPathname() ) );
}
else if ( $node->isFile() )
{
$data[] = $node->getFilename();
}
}
return $data;
}
输出可能是这样的
$fileData = $this->fillArrayWithFileNodes(new DirectoryIterator( public_path(). '/images'));
这让我很困惑。当我通过xampp在本地运行时,结构按字母顺序返回。这是可以预料到的,因为当我实际在Windows中查看该文件夹时,它会自动以这种方式显示。
但是,当我把它放在实时服务器上时,结构非常随机。我最终得到了类似的东西
array:2 [▼
"folder1" => array:1 [▼
2016 => array:4 [▼
"1" => array:1 [▶]
"2" => array:2 [▶]
"3" => array:4 [▶]
"4" => array:4 [▶]
]
]
]
这是与实时服务器所在的操作系统有关,这是基于Linux的吗?我如何能一直按字母顺序排列?
由于
答案 0 :(得分:1)
对于ksort解决方案,您可以执行类似的操作(可能有更简单和更短的内容):
$fileData = array(
"folder1" => array(
"4" => array(
"test"
),
"2" => array(
"test"
),
"3" => array(
"test"
),
"1" => array(
"test"
),
"5" => array(
"test"
),
)
);
function sortYourArray($arr) {
ksort($arr);
foreach ($arr as $k => $v) {
if (is_array($v)) {
$arr[$k] = sortYourArray($v);
}
}
return $arr;
}
$sortedArray = sortYourArray($fileData);
print_r($sortedArray);
答案 1 :(得分:1)
这个简单的改变似乎有效
function fillArrayWithFileNodes( DirectoryIterator $dir )
{
$data = array();
foreach ( $dir as $node )
{
if ( $node->isDir() && !$node->isDot() ) {
$data[$node->getFilename()] = $this->fillArrayWithFileNodes( new DirectoryIterator( $node->getPathname() ) );
} else if ( $node->isFile() ) {
$data[] = $node->getFilename();
}
}
sort($data);
return $data;
}
您可能需要摆弄
sort()
参数以获得您想要的http://php.net/manual/en/function.sort.php