#!/usr/bin/php
<?php
define("KPA_PEOPLE","/devel/pic/snk_db2/KPA-migration/Keywords/gettingTheKeywordsAndFiles/KPA_People.txt");
$hndl_kpa_people=fopen(KPA_PEOPLE,"r+") or die("Failed opening ".KPA_PEOPLE);
while($line=fgets($hndl_kpa_people)!==FALSE){
echo "\nline: ".$line."\n";
}
?>
Context:
The file looks like this in the file system:
-rw-r--r-- 1 snkdb snkdb 6096 dec 25 14:08 KPA_People.txt
(I'm the user snkdb)
The file's contents looks like:
et|2
Elisabet|3
okända|4...
结果如下所示:
line: 1
line: 1
line: 1...
预期结果是:
et|2
Elisabet|3
okända|4...
据我所知,while($line=fgets($hndl_kpa_people)!==FALSE)遵循了手册中的约定,看起来像是在早期的脚本中工作的。2任何想法都将不胜感激!
2条答案
按热度按时间jtoj6r0c1#
在以下行中:
PHP首先计算表达式
fgets($hndl_kpa_people)!==FALSE
,然后将其赋给变量$line
。此外,如果
while
循环中的某些内容与false
不同,则进行评估是多余的,因为while
循环在其评估的条件为真时运行。因此,该行应为:
您可以在官方文档中阅读更多关于运算符优先级的信息:https://www.php.net/manual/en/language.operators.precedence.php
您可以在这里阅读更多关于
while
loop的信息:https://www.php.net/manual/en/control-structures.while.php**编辑:**因为注解中有一个混淆,阅读一个空行是否会返回
false
-它不会,举下面这个简单的例子:使用以下示例文件:
执行的结果为:
quhf5bfb2#
谢谢你们!两个答案都很好。尼古拉得到了问题,奈杰尔提出了有效的解决方案。我希望你们也有一些空闲时间,在假期。