数组的前三个元素在PHP中消失

数组的前三个元素在PHP中消失,php,arrays,Php,Arrays,我已经编写了一个PHP函数,可以搜索文件夹,并将以“WhatsApp Chat mit”开头的所有文件的路径和名称添加到数组中。如果存在子文件夹,则函数会递归调用自身。问题是,数组的前三个元素总是消失,其余元素保持正常。前三个元素是什么并不重要,总是一样的。如果直接在循环中回显文件名和路径,则输出前三个元素,但在数组中,它们消失。首先,我认为已达到阵列的最大大小,但这不是问题所在 有什么想法吗 function readDirectory($path, $data) { $rawData

我已经编写了一个PHP函数,可以搜索文件夹,并将以“WhatsApp Chat mit”开头的所有文件的路径和名称添加到数组中。如果存在子文件夹,则函数会递归调用自身。问题是,数组的前三个元素总是消失,其余元素保持正常。前三个元素是什么并不重要,总是一样的。如果直接在循环中回显文件名和路径,则输出前三个元素,但在数组中,它们消失。首先,我认为已达到阵列的最大大小,但这不是问题所在

有什么想法吗

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;
}