Поэтому мне нужно сначала открыть каталог, который я сделал, и он работает, после того, как мне нужно сделать файлы с именем «.» и «..», чтобы я не отображался, что я и сделал, и это тоже работает, но после всего этого мне нужно открыть каждый файл из этого каталога (кроме этих «.» и «..») и отобразить его содержимое.
Мой код здесь:
<?php
$handle = opendir('data');
$files = array();
while (false !== ($file = readdir($handle))) {
if ($file!=="." && $file!=="..") {
$files = $file;
print_r ('<p>' . ucfirst($files) .'</p>');
}
foreach($files as $dataz) {
$handle2 = fopen('data/'.$dataz, 'r');
while (!feof($handle2)) {
$name = fgets($handle2);
echo '<p>' . $name .'</p>';
}
fclose($handle2);
}
}
closedir($handle);
?>
Ошибка, которую я получаю:
Предупреждение: неверный аргумент указан для foreach () в /home/something/something/websitephp/weather.php в строке 30, стек вызовов: 0,0025 325952 1. {main} () /home/something/something/websitephp/weather.php: 0
Я думаю, что ошибка будет $ dataz, но мне нужно это, чтобы указать fopen, какие файлы должны открыться.
Вот
$files = $file;
вы переписываете массив каждый раз
использование
$files[] = $file;
вместо
редактировать
$handle = opendir('data');
$files = array();
while (false !== ($file = readdir($handle))) {
if ($file !== "." && $file !== "..") {
$files[] = $file;
print_r('<p>' . ucfirst($files) . '</p>');
}
}
foreach ($files as $dataz) {
$handle2 = fopen('data/' . $dataz, 'r');
while (!feof($handle2)) {
$name = fgets($handle2);
echo '<p>' . $name . '</p>';
}
fclose($handle2);
}
closedir($handle);
Я реорганизовал код и заставил его работать
$directoryPath = 'data';
// Get the file listing
$files = array();
foreach (scandir($directoryPath) as $file) {
if (is_file("$directoryPath/$file")) {
$files[] = $file;
}
}
// Display each files content
foreach($files as $file) {
echo '<p>' . ucfirst($file) .'</p>';
$contents = file_get_contents("$directoryPath/$file");
// Print each line of the file
foreach (explode("\n", $contents) as $line) {
echo '<p>' . $line .'</p>';
}
}
Итак, решение, которое у меня есть на данный момент:
<?php
$handle = opendir('data');
$files = array();
while (false !== ($file = readdir($handle))) {
if ($file!=="." && $file!=="..") {
$files[] = $file;
print_r ('<p>' . strtoupper($file) .'</p>');
}
foreach($files as $dataz) {
$handle1 = fopen('data/'.$dataz, 'r');
while (!feof($handle1)) {
$name = fgets($handle1);
echo '<p>' . $name .'</p>';
}
fclose($handle1);
}
}
closedir($handle);
?>
Это имя файла, кроме «.» и «..» и in считывает содержимое файлов, но когда оно отображает содержимое второго файла, сначала отображается содержимое 1-го файла, а после него отображается содержимое второго файла, то есть должно отображаться. По какой-то причине $ name, похоже, сохраняет в себе содержимое предыдущего файла.
чтобы понять, что я говорю, пожалуйста, посмотрите на это ссылка на сайт.