мой data.txt
файл как:
4
73
67
38
33
Я запускаю этот php файл тест fscanf.
<?php
$handle = fopen ("data.txt", "r");
fscanf($handle, "%d",$n);
echo 'n:', $n; //outputs 4.
$grades = array();
for($grades_i = 0; $grades_i < $n; $grades_i++){
fscanf($handle,"%d",$grades[]);
}
print_r($grades);
?>
выход приведенного выше сценария:
n: 4 Array ([0] => 73 1 => 67 [2] => 38 [3] => 33)
Я смотрел это документация который не объясняет какие могут быть необязательные параметры, т.е. параметр i.e.third и другие в fscanf ().
Любая идея приветствуется.
Если вы используете
10 73 67 38 33
В вашем файле вы получаете
n:10Array
(
[0] => 73
[1] => 67
[2] => 38
[3] => 33
[4] =>
[5] =>
[6] =>
[7] =>
[8] =>
[9] =>
)
Просто потому, что первый fscanf читает первую строку (в данном примере «10») в $ n. Для этого используется третий параметр (см. Смешанный &$ в документах: http://php.net/manual/de/function.fscanf.php).
Хорошо, как я проверил английские документы в http://php.net/manual/en/function.fscanf.php Я понимаю ваш вопрос. Немецкое объяснение гласит: «Необязательный als Referenz übergebene Variablen, in welche die geparsten Werte geschrieben werden sollen».
Перевод: Необязательный параметр описывает ссылку, в которую будут записаны проанализированные значения.
Итак, если вы используете $ n для первого fscanf, функция поместит содержимое первой строки (4 в вашем примере) в $ n.
Эта строка:
for($grades_i = 0; $grades_i < $n; $grades_i++) {
итерация 4 раза, потому что $ n = 4
Если вы хотите прочитать весь файл в массив, используйте файл функция, вот пример:
$arr = file(data.txt);
print_f($arr);
Пример использования fscanf
$handle = fopen ("data.txt", "r");
$grades = array();
while( fscanf($handle,"%d",$grades[]) );
print_f($grades);