Jer*_*mer 0 php return return-value
我更喜欢使用 Python 语言进行编程,但必须使用 PHP 来处理特定的网站应用程序项目。
在 PHP 中,我试图将函数中的值“返回”到主程序环境(用于后续计算),但无论我尝试什么,函数中计算的值都不会返回该值(而是从函数中回显)工作正常)。
在Python中,我从来没有遇到过返回变量的问题:即从函数返回的所有值对于主程序和/或调用产生返回值的函数的其他函数都是可用的和可访问的。
有人可以告诉我如何解决这个问题吗?过去两天我一直在谷歌和 stackoverflow 等网站上搜索,但没有成功。我有很多 O'Reilly 计算机书籍,其中包括许多有关 PHP 的书籍,我在这些书籍中交叉引用了我的研究,并阅读了有关 RETURN 函数的所有内容 - 看来我所做的一切都是正确的,甚至专门声明了要返回的值。至关重要的是,我能够返回值并有权访问这些值,以便继续进行该项目的开发 - 否则,如果我无法返回值进行进一步处理,我就会陷入困境!
这是相关的代码片段:
// DECLARE FUNCTIONS
// FUNCTION
function Calculation_IsArray ($ArrayAny){
if (is_array($ArrayAny)) {
echo '<div>THIS VAR IS AN ARRAY</div>';
$Var_IsArray = TRUE;
return $Var_IsArray;
} else {
echo '<div>THIS VAR IS **NOT** AN ARRAY</div>';
}
}
Run Code Online (Sandbox Code Playgroud)
声明函数并进行一些初始计算以获取数组进行检查后,我按如下方式调用上述函数:
// CALL FUNCTION
Calculation_IsArray($ArrayOfValues);
Run Code Online (Sandbox Code Playgroud)
我期望程序调用函数 Calculation_IsArray() 并向其传递要检查的数组 ($ArrayOfValues)。从下面的输出中可以看到,数组已通过并检查并确认为数组类型,并且 FOREACH 循环以及 IF/ELSE 条件都工作正常并回显正确的输出。但是,上面的代码不会返回任何值,因为当我检查“返回”后可从主程序访问的返回值(即已检查的数组)时,您可以看到回显的 NULL 值。
以下是浏览器屏幕上回显的结果(输出):
此 VAR 是一个数组
返回的数组 =
$Var_IsArray 的
NULL
值= 数组键元素的
NULL
计数 = 2 个数组键元素为数字
键 = 0,值 =
数组键元素的数组计数 = 2 个
数组键元素为数字
键 = 1,值 = 数组
我在 stackoverflow 上进行了搜索,发现了类似问题的报告(我什至尝试测试这些解决方案的建议,例如将 return 放在我的函数中的各个位置以测试它的工作位置),但没有任何效果,并且这种失败根据我所读到的内容,如果显式告知 PHP 返回值,则返回值不符合逻辑。
非常感谢您在此事上的任何帮助!
[提交上述原始问题后]:
我现在尝试通过创建一个名为 TestReturn.php 的测试脚本来隔离我的问题。
在该脚本中,我放置了以下代码,但仍然没有返回值!
// DECLARE FUNCTIONS
// FUNCTION
function Calculation_IsArray ($ArrayAny){
if (is_array($ArrayAny)) {
echo '<div>THIS VAR IS AN ARRAY</div>';
$Var_IsArray = TRUE;
return $Var_IsArray;
} else {
echo '<div>THIS VAR IS **NOT** AN ARRAY</div>';
}
}
// BEGIN MAIN PROGRAM
$x = array(1, 2, 3, 4, 5, 6, 7);
Calculation_IsArray($x);
// COME BACK TO HERE AFTER THE FUNCTION RETURNS CALCULATED VALUE
echo '<div>HERE IS THE RETURNED VALUE AND VAR_DUMP BELOW:' . $Var_IsArray . '</div>';
var_dump($Var_IsArray);
Run Code Online (Sandbox Code Playgroud)
以下是浏览器选项卡/窗口/终端的 HTML 输出:
这个 VAR 是一个数组,
这里是返回值和下面的 VAR_DUMP:
NULL
“队长,这不会计算!”,即这对我来说没有意义,为什么 PHP 没有返回我特意告诉它返回主程序的值!
我尝试了所有编码的可能性,包括:
return $variable;
return ($variable);
return() ; // i.e. I read somewhere that PHP by default returns the last calculated value in a function.
return ;
Run Code Online (Sandbox Code Playgroud)
为什么 PHP 不将我的值/变量返回到主程序?
当您从函数返回某些内容时,它不会使变量本身在调用范围(即函数外部)中可用。换句话说,$Var_IsArray只存在于函数内部。
仅返回变量的内容,并且必须在调用函数的地方立即使用结果;例如,存储它以供将来参考、将其传递给另一个函数或在某种条件下测试它。
例如:
function foo()
{
$vals = ['red', 'green', 'blue'];
return $vals;
}
$somedata = foo();
Run Code Online (Sandbox Code Playgroud)
在此示例中,$somedata最终将保存先前存储在 中的数组$vals。
这是大多数编程语言中返回语句(或等效功能)的标准行为。还有其他方法可以从函数中获取变量,例如使用全局变量。一般来说,它们并不是一个好的做法。
我以前也使用过Python,我不认为它有什么不同(除非我错过了一个主要的语言功能)。您可能需要仔细检查您的 Python 代码是否正在执行您认为它正在执行的操作,否则您将来可能会遇到一些令人讨厌的错误。