PHP变量var_dump = NULL?

时间:2017-01-01 04:49:29

标签: php variables var-dump

我有一个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;用于代码的其他部分,因为它没有其他任何工作,我不知道为什么?

2 个答案:

答案 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