【问题标题】:PHP variable var_dump = NULL?PHP 变量 var_dump = NULL?
【发布时间】:2017-01-01 04:49:29
【问题描述】:

我有一个 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,它会显示 'tjones'(用户名)。

我在脚本中运行以下内容。

<?php
// Read the Username
require_once('fileread2.php');

$userName = fileRead2();
echo $userName;
var_dump($userName);
>?

它回显了显示的“tjones”的$userName,但是 var_dump 显示其输出为 NULL。

var_dump 是否有任何理由将$userName 变量显示为 NULL,而它应该是字符串 'tjones'?

我问的原因是因为我需要变量 $userName; 用于代码的其他部分,并且因为它是 NULL 没有其他工作,我不知道为什么?

【问题讨论】:

  • var_dump 输出自身,您不需要与echo 一起使用。

标签: php variables var-dump


【解决方案1】:

您需要修改 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 脚本生成网页内容,它会将信息输出到浏览器(这是一种简化)。

另一方面,Return 在函数内部用于向函数外部的代码块发送信息。因此,在您的情况下,您希望函数 fileRead2 从 username.txt 文件中读取,然后返回第一行(用户名),以便您可以设置函数外部的变量。为此,您必须使用return

另外注意,如果除了将 $line 变量设置为 fgets 输出并且用户名位于 username.txt 文件的第一行之外,您没有在该行上做任何额外的“工作”,那么您不需要不需要while循环。相反,您可以只执行$line = fgets($fh);,然后当然关闭文件并返回$line 变量。

【讨论】:

  • return $line 只会返回 false
  • @KrisRoofe 谢谢!已修复,尽管我承认这不是最好的结构。我不确定 OP 到底在做什么,所以我不确定重构代码是否有意义。
【解决方案2】:

你的函数fileRead2() 没有return 子句,所以它返回类型为void。而var_dump()的返回类型也是void

所以

$userName 为空,所以echo $userName 什么也不输出。

var_dump($username) 将输出 NULL。

echo var_dump($userName) 不输出任何内容。

在您的代码中,readfile2 只需添加 return $line; 将返回 false

【讨论】:

    猜你喜欢
    • 2014-02-19
    • 2016-02-09
    • 2015-11-17
    • 2011-01-26
    • 2015-06-29
    • 2019-01-06
    • 2014-04-02
    • 2014-01-24
    • 2013-05-09
    相关资源
    最近更新 更多