什么可以成为PHP中fscanf的第三个参数?

时间:2017-12-13 15:53:20

标签: php arrays file scanf

我的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数组([​​0] =&gt; 73 1 =&gt; 67 [2] =&gt; 38 [3] =&gt; 33)

我看过这个documentation没有解释可能的参数,即fscanf()中的第三个参数和其他参数。

欢迎任何形式的想法。

2 个答案:

答案 0 :(得分:2)

如果您使用

  

10 73 67 38 33

在你的档案中,你得到

n:10Array
(
    [0] => 73
    [1] => 67
    [2] => 38
    [3] => 33
    [4] => 
    [5] => 
    [6] => 
    [7] => 
    [8] => 
    [9] => 
)

只是因为第一个fscanf将第一行(本例中为“10”)读入$ n。这就是第三个参数的用法(参见文档中的混合&amp; $ http://php.net/manual/de/function.fscanf.php)。

好的,我在http://php.net/manual/en/function.fscanf.php检查了英文文档时,我理解你的问题。德国解释说明:“Optionale alsReferenzübergebeneVuturen,in welche die geparsten Werte geschrieben werden sollen。”

翻译:可选参数描述了一个引用,其中将分析已解析的值。

因此,如果您对第一个fscanf使用$ n,该函数会将第一行的内容(在您的示例中为4)放入$ n。

答案 1 :(得分:0)

这一行:

for($grades_i = 0; $grades_i < $n; $grades_i++) {

迭代4次,因为$ n = 4

如果你想将整个文件读入数组使用file函数,这里有一个例子:

 $arr = file(data.txt);
 print_f($arr);

使用fscanf

的示例
 $handle = fopen ("data.txt", "r");

 $grades = array();

 while( fscanf($handle,"%d",$grades[]) );

 print_f($grades);