排列路径数组:
$paths = array(
"C:\test1\file1.txt",
"C:\test1\file2.txt",
"C:\test2\test1\file15.txt",
"C:\test1\file4.txt"
);
PHP代码返回数据 - 如果可能的话,作为数组多维:
You have 2 folders [count array of folders]
In folder 1 you have 3 files [count array of files]
In folder 2 you have 1 files [count array of files]
[C:\test1\] => file1.txt,file2.txt,file4.txt
[C:\test2\test1\] => file15.txt
答案 0 :(得分:0)
函数cut_string_using_last来自http://php.net/manual/en/function.strrchr.php
function cut_string_using_last($character, $string, $side, $keep_character=true) {
$offset = ($keep_character ? 1 : 0);
$whole_length = strlen($string);
$right_length = (strlen(strrchr($string, $character)) - 1);
$left_length = ($whole_length - $right_length - 1);
switch($side) {
case 'left':
$piece = substr($string, 0, ($left_length + $offset));
break;
case 'right':
$start = (0 - ($right_length + $offset));
$piece = substr($string, $start);
break;
default:
$piece = false;
break;
}
return($piece);
}
$Arrange = array();
$paths = array("C:\\test1\\file1.txt", "C:\\test1\\file2.txt", "C:\\test2\\test1\\file15.txt", "C:\\test1\\file4.txt");
foreach ($paths as $path) {
$pathWithoutFileName = $db->cut_string_using_last('\\', $path, 'left', true);
$fileName = $db->cut_string_using_last('\\', $path, 'right', false);
if (array_key_exists($pathWithoutFileName, $Arrange)) {
array_push($Arrange[$pathWithoutFileName], $fileName);
} else $Arrange[$pathWithoutFileName] = array($fileName);
}
print_r($Arrange); // Array ( [C:\test1\] => Array ( [0] => file1.txt [1] => file2.txt [2] => file4.txt ) [C:\test2\test1\] => Array ( [0] => file15.txt ) )
答案 1 :(得分:0)
function getMergePaths($pathArray){
$result = [];
foreach($pathArray as $path){
$basepath = dirname($path);
$basename = basename($path);
if(isset($result[$basepath])){
$result[$basepath] .= ','.$basename;
}else{
$result[$basepath] = $basename;
}
}
return $result;
}