我有一个PHP脚本,它从文件fileRead2.php调用函数fileRead2函数。
下面的函数读取username.txt(显示用户名)。
vim fileRead2.php
<?php
function fileRead2() {
global $fh, $line;
$fh = fopen('username.txt','r');
while ($line = fgets($fh)) {
// <... Do your work with the line ...>
echo($line);
}
fclose($fh);
}
?>
如果我在linux文件系统上运行linux命令cat,它会显示&#39; tjones&#39; (用户名。)
我在脚本中运行以下内容。
<?php
// Read the Username
require_once('fileread2.php');
$userName = fileRead2();
echo $userName;
var_dump($userName);
>?
它显示了$userName
显示&#39; tjones&#39;但是var_dump显示其输出为NULL。
var_dump是否有任何理由将$userName
变量显示为NULL,而它应该是字符串&#39; tjones&#39;?
我问的原因是因为我需要变量$userName;
用于代码的其他部分,因为它没有其他任何工作,我不知道为什么?
答案 0 :(得分:2)
您需要修改fileRead2.php才能使用return
代替echo
:
<?php
function fileRead2() {
global $fh, $line;
$fh = fopen('username.txt','r');
$lineReturn = "";
while ($line = fgets($fh)) {
// <... Do your work with the line ...>
$lineReturn = $line;
}
fclose($fh);
return $lineReturn;
}
?>
echo
用于向标准输出发送信息 - 这意味着如果您在终端中运行php脚本并使用echo,它将被发送到终端(假设您没有将标准输出重定向到别处);如果您使用php脚本生成Web内容,它会将信息输出到浏览器(这是一种简化)。
另一方面返回内部函数用于向函数外部的代码块发送信息。因此,在您的情况下,您希望函数fileRead2从username.txt文件中读取,然后返回第一行(用户名),以便您可以设置函数外部的变量。为此,您必须使用return
。
另外请注意,如果除了将$ line变量设置为fgets输出并且用户名位于username.txt文件的第一行之外,你还没有做任何额外的“工作”,那么你就不要需要一个while循环。相反,您可以执行$line = fgets($fh);
,然后关闭文件并返回$line
变量。
答案 1 :(得分:0)
你的函数fileRead2()
没有return子句,所以返回类型为void。 var_dump()
的返回类型也是void。
所以
$userName
为空,因此echo $userName
不输出任何内容。
var_dump($username)
将输出NULL。
echo var_dump($userName)
什么都没输出。
在你的代码中,只需添加return $line;
的readfile2将返回false