数组的前三个元素在PHP中消失
我已经编写了一个PHP函数,可以搜索文件夹,并将以“WhatsApp Chat mit”开头的所有文件的路径和名称添加到数组中。如果存在子文件夹,则函数会递归调用自身。问题是,数组的前三个元素总是消失,其余元素保持正常。前三个元素是什么并不重要,总是一样的。如果直接在循环中回显文件名和路径,则输出前三个元素,但在数组中,它们消失。首先,我认为已达到阵列的最大大小,但这不是问题所在 有什么想法吗数组的前三个元素在PHP中消失,php,arrays,Php,Arrays,我已经编写了一个PHP函数,可以搜索文件夹,并将以“WhatsApp Chat mit”开头的所有文件的路径和名称添加到数组中。如果存在子文件夹,则函数会递归调用自身。问题是,数组的前三个元素总是消失,其余元素保持正常。前三个元素是什么并不重要,总是一样的。如果直接在循环中回显文件名和路径,则输出前三个元素,但在数组中,它们消失。首先,我认为已达到阵列的最大大小,但这不是问题所在 有什么想法吗 function readDirectory($path, $data) { $rawData
function readDirectory($path, $data) {
$rawData = scandir($path);
foreach($rawData AS $key => $item) {
if($item[0] == ".") {
unset($data[$key]);
continue;
} else {
if(is_dir($path."/".$item)) {
$data = readDirectory($path."/".$item, $data);
} elseif(substr($item, 0, 17) == "WhatsApp Chat mit") {
$url = urlencode($path."/".$item);
$name = substr($item, 17, -4);
$data[] = [$name, $url];
}
}
}
return $data;
}
您正在循环
$rawData
数组并从$data
数组中删除
如果$rawData
中的前三个元素以点开头,则无论$data
中的元素是什么,它们都将被删除
function readDirectory($path, $data) {
$rawData = scandir($path);
foreach($rawData AS $key => $item) {
if($item[0] == ".") {
unset($data[$key]); // <-- Remove THIS
continue;
} else {
if(is_dir($path."/".$item)) {
$data = readDirectory($path."/".$item, $data);
} elseif(substr($item, 0, 17) == "WhatsApp Chat mit") {
$url = urlencode($path."/".$item);
$name = substr($item, 17, -4);
$data[] = [$name, $url];
}
}
}
return $data;
}
消失的项目是否以点
字符开头?
function readDirectory($path, $data) {
$rawData = scandir($path);
foreach($rawData AS $key => $item) {
if($item[0] !== ".") {
if(is_dir($path."/".$item)) {
$data = readDirectory($path."/".$item, $data);
} elseif(substr($item, 0, 17) == "WhatsApp Chat mit") {
$url = urlencode($path."/".$item);
$name = substr($item, 17, -4);
$data[] = [$name, $url];
}
}
}
return $data;
}