1zzY1907
@1zzY1907
Веб программист

Почему не записывается в массив PHP?

Здравствуйте, имеется PHP код.
Сценарий таков: в первой половине скрипт заносит в массив $dirVals только папки из рабочей директории.
Во второй половине, выводим print_r содержимое одной из папок рабочей директории и через цикл заносим в массив $fileVals только файлы, без папок.

Результат: пустой массив, аналогично есть попробовать заместо is_file => is_dir

$dirVals = [];
	$fileVals = [];
	$dir = getCwd();

	/* 2.Adding all dirs to array */
	$folders = scandir($dir);
	foreach($folders as $f){
		if($f == '.' || $f == '..') continue;
		if(is_dir($f)){
			$dirVals[] = $f;
		}
	}
        
        print_r($dirVals); // ЗДЕСЬ показывает только список папок в текущей директории



	$files = scandir($dir.'/some-dir0');
	print_r($files); // ЗДЕСЬ показывает список всех папок и файлов

	foreach($files as $fileNames){ 
		if($fileNames == '.' || $fileNames == '..') continue;
		if(is_file($fileNames)){ 
			$fileVals[] = $fileNames;
    }
}

echo '<br/>';			
print_r($fileVals);  // здесь НЕ показывает список файлов, которые должны были внестись в массив


Прошу подсобить и указать на ошибки) Буду признателен!

P.S. чур тапками не кидаться
  • Вопрос задан
  • 142 просмотра
Решения вопроса 1
slo_nik
@slo_nik Куратор тега PHP
Добрый вечер.
В последнем случае Вы сканируете вложенную директорию somo-dir0 и получаете файлы, которые находятся в ней.
При проверке is_file() Вы указываете только имя файла, без пути к нему.
Поэтому файл не найден и массив не заполняется.
$files = scandir($dir.'/some-dir0');
foreach($files as $fileNames){ 
    if($fileNames == '.' || $fileNames == '..') continue;
    if(is_file('some-dir0/' . $fileNames)){ 
      $fileVals[] = $fileNames;
    }
}

echo '<br/>';			
print_r($fileVals);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы