【问题标题】:What can be the third parameter in fscanf in PHP?PHP中fscanf的第三个参数可以是什么?
【发布时间】:2017-12-13 15:53:20
【问题描述】:

我的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] => 73 1 => 67 [2] => 38 [3] => 33)

我看过这个documentation,它没有解释什么是可选参数,即 fscanf() 中的第三个参数和其他参数

欢迎任何想法。

【问题讨论】:

  • 你读过documentation吗?
  • 是的。我有,我的问题是关于可选参数的。
  • 你能用一个我不明白的例子来回答它吗?
  • 嗯...我在学习 PHP 时就知道 C 中的 fscanf() 函数,直到现在才阅读它的文档。实际上,只有前两个参数是必需的,其余的都是可选的。如果未提供可选参数,则该函数返回一个数组,其中包含它从文件中读取的所有值。如果提供了可选参数,则它将读取的值存储在其中。

标签: php arrays file scanf


【解决方案1】:

如果你使用

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 的英文文档,我理解您的问题。德国解释说:“Optionale als Referenz übergebene Variablen, in welche die geparsten Werte geschrieben werden sollen。”

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

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

【讨论】:

  • 好的。经过您的解释以及可选参数如何,我明白了。我看过文档。没有任何解释。
【解决方案2】:

这一行:

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

【讨论】:

  • scanf的参数是什么
  • fscanf根据格式从文件中读取,并将指针移动到下一行,
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-21
  • 2020-12-26
  • 2020-04-29
  • 1970-01-01
  • 1970-01-01
  • 2012-05-10
相关资源
最近更新 更多