PHP variable var_dump = NULL?



我有一个PHP脚本,它从文件fileRead2.php调用函数fileRead2函数。

下面的函数读取用户名.txt(显示的是用户名)。

vim 文件读取2.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"$userNamevar_dump但显示其输出为 NULL。

有什么理由var_dump将$userName变量显示为 NULL,而它应该是字符串"tjones"?

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

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

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

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

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

所以

$userName为空,因此echo $userName不输出任何内容。

var_dump($username)将输出空值。

echo var_dump($userName)什么都不输出。

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

最新更新