Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 函数读取整个文件_Php_Fgetc - Fatal编程技术网

Php 函数读取整个文件

Php 函数读取整个文件,php,fgetc,Php,Fgetc,我正在尝试使用带有do..while循环的fgetc()读取整个文件。我知道这是不建议的,但它应该工作。counter.dat的内容是我不知道该做什么,但我得到的输出是0。为什么是0 <?php $f = "counter.dat"; if (!($fp = fopen($f,"r"))) { die("Can Not Open $f"); } do { $one_char = fgetc($fp); $counter = $one_char; $count

我正在尝试使用带有do..while循环的fgetc()读取整个文件。我知道这是不建议的,但它应该工作。counter.dat的内容是我不知道该做什么,但我得到的输出是0。为什么是0

<?php
 $f = "counter.dat";
 if (!($fp = fopen($f,"r"))) {
      die("Can Not Open $f");
 }
 do {
  $one_char = fgetc($fp);
  $counter = $one_char;
  $counter .= $one_char;
 } while($one_char);
 fclose($fp);
 $counter = (int) $counter;
 echo $counter;
?>

在追加到循环之前,每次循环都会覆盖
$counter
。在最后一次迭代中,
$one_char
将是
FALSE
,因此您将
$counter=FALSE
,将其转换为整数将返回
0

您还需要在开头将
$counter
初始化为空字符串

由于文件不包含整数,因此不应使用
(int)$counter
。只需打印
$counter
的值即可

这样做:

$counter = "";
while ($one_char = fgetc($fp)) {
    $counter .= $one_char;
}
echo $counter;

这将在到达EOF时立即退出循环,它不会尝试使用上一次迭代中的
FALSE
值。

每次通过循环时,在附加到它之前,都会覆盖
$counter
。在最后一次迭代中,
$one_char
将是
FALSE
,因此您将
$counter=FALSE
,将其转换为整数将返回
0

您还需要在开头将
$counter
初始化为空字符串

由于文件不包含整数,因此不应使用
(int)$counter
。只需打印
$counter
的值即可

这样做:

$counter = "";
while ($one_char = fgetc($fp)) {
    $counter .= $one_char;
}
echo $counter;


这将在到达EOF时立即退出循环,它不会尝试使用上一次迭代中的
FALSE
值。

执行
$counter=$one\char。“摆脱那条线。”巴尔马。我按照您所说的做了,但它在第12行给出了一个错误,表示计数器未定义。因为您从未初始化过
$counter
。计数器的内容是什么。dat@RonakDhoot. counter.dat包含这样一句话,“我不知道该怎么做”,当您执行
$counter=$one\u char。“摆脱那条线。”巴尔马。我按照您所说的做了,但它在第12行给出了一个错误,表示计数器未定义。因为您从未初始化过
$counter
。计数器的内容是什么。dat@RonakDhoot. counter.dat包含一句话,“我不知道该怎么做”,我复制了您的代码并粘贴到了那里。0仍然是输出。文件是否包含一个数字?不。只有一句话,即“我不知道该怎么做”。为什么要用
(int)$counter
将其转换为整数?哦。这就是问题所在。我去掉了它,它就起作用了。请编辑您的答案,以便我可以选择它作为答案。谢谢你的帮助。我复制了你的代码并粘贴在那里。0仍然是输出。文件是否包含一个数字?不。只有一句话,即“我不知道该怎么做”。为什么要用
(int)$counter
将其转换为整数?哦。这就是问题所在。我去掉了它,它就起作用了。请编辑您的答案,以便我可以选择它作为答案。谢谢你的帮助。