Что может быть третьим параметром в fscanf в PHP?

мой 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 ().

Любая идея приветствуется.

0

Решение

Если вы используете

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.

2

Другие решения

Эта строка:

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);
0

По вопросам рекламы [email protected]