Php 函数读取整个文件
我正在尝试使用带有do..while循环的fgetc()读取整个文件。我知道这是不建议的,但它应该工作。counter.dat的内容是我不知道该做什么,但我得到的输出是0。为什么是0Php 函数读取整个文件,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
<?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
将其转换为整数?哦。这就是问题所在。我去掉了它,它就起作用了。请编辑您的答案,以便我可以选择它作为答案。谢谢你的帮助。