我更喜欢使用Python语言编程,但必须使用PHP来处理特定的网站应用程序项目。
在PHP中我试图"返回"从函数到主程序环境的值(用于后续计算),但无论我尝试在我的函数中计算的值都不返回值(但函数的回显工作正常)。
在Python中,我从来没有遇到过返回变量的问题:即从函数返回的所有值都可用,并且可以被主程序和/或调用产生返回值的函数的其他函数访问。
有人可以告诉我如何解决这个问题吗?我一直在搜索谷歌和网站ike stackoverflow过去2天没有成功。我有许多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>';
}
}
在声明函数并进行一些初始计算以获取数组进行检查后,我按如下方式调用上述函数:
// CALL FUNCTION
Calculation_IsArray($ArrayOfValues);
我希望程序调用函数Calculation_IsArray()并将其传递给要检查的数组($ ArrayOfValues)。您可以从下面的输出中看到,数组被传递并检查并确认为数组类型,FOREACH循环以及IF / ELSE条件都正常工作并回显正确的输出。但是,上面的代码不会返回任何值,因为您可以看到当我检查返回值(即已检查的数组)在&#34; return&#34;之后可从主程序访问时回显的NULL值。
以下是与浏览器屏幕(输出)相呼应的结果:
这个VAR是阵列
返回阵列=
NULL
值$ Var_IsArray =
NULL
数量的阵列关键元素= 2
阵列关键元素是数字
KEY = 0,VALUE = Array
数量的阵列关键元素= 2
阵列关键元素是数字
KEY = 1,VALUE = Array
我在这里搜索了stackoverflow并发现了类似问题的报告(我甚至尝试测试这些解决方案的建议,例如在我的函数中的各个位置放置返回来测试它的工作原理),但没有任何工作,并且根据我所读到的,如果将expliciting告知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);
以下是HTML到浏览器标签/窗口/终端的输出:
这个VAR是阵列
这是返回值和VAR_DUMP以下:
NULL
&#34;队长,这不计算!&#34;,即这对我来说没有意义为什么PHP没有返回我的值,我明确告诉它返回主程序!
我已尝试过编码的所有可能性,包括:
return $variable;
return ($variable);
return() ; // i.e. I read somewhere that PHP by default returns the last calculated value in a function.
return ;
为什么PHP没有将我的值/变量返回给主程序?
答案 0 :(得分:2)
当您从函数返回某些内容时,它不会使调用范围内的变量本身可用(即在函数外部)。换句话说,$Var_IsArray
仅存在内部函数。
只返回变量的内容,并且必须在调用函数的地方立即使用结果;例如将其存储以备将来参考,将其传递给另一个函数,或者在条件下进行测试。
例如:
function foo()
{
$vals = ['red', 'green', 'blue'];
return $vals;
}
$somedata = foo();
在此示例中,$somedata
将最终保存先前存储在$vals
中的数组。
这是大多数编程语言中返回语句(或等效功能)的标准行为。还有其他方法可以从函数中获取变量,例如通过使用全局变量。一般来说,它们不是很好的做法。
我之前也使用过Python,我认为它没有任何不同(除非我错过了一个主要的语言功能)。您可能需要仔细检查您的Python代码是否正在执行您认为正在执行的操作,否则您将来可能会遇到一些令人讨厌的错误。
答案 1 :(得分:0)
你可以将函数简化为以下内容,因此它总是返回一些东西(true,false)
<?php next_post_link('%link »'); ?>
<?php previous_post_link('« %link'); ?>
答案 2 :(得分:0)
<?php
// DECLARE FUNCTIONS
// FUNCTION
function Calculation_IsArray ($ArrayAny){
if (is_array($ArrayAny)) {
echo '<div>THIS VAR IS AN ARRAY</div>';
//$Var_IsArray = TRUE;
return true;
} else {
echo '<div>THIS VAR IS **NOT** AN ARRAY</div>';
}
}
// BEGIN MAIN PROGRAM
$x = array(1, 2, 3, 4, 5, 6, 7);
$status = Calculation_IsArray($x);
if($status == true){
// COME BACK TO HERE AFTER THE FUNCTION RETURNS CALCULATED VALUE
echo '<div>HERE IS THE RETURNED VALUE AND VAR_DUMP BELOW:<br />' . print_r($x) . '</div>';
var_dump($x);
}
答案 3 :(得分:0)
希望这会有所帮助:
// FUNCTION
function Calculation_IsArray ($ArrayAny){
if (is_array($ArrayAny)) {
echo '<div>THIS VAR IS AN ARRAY</div>';
return true;
} else {
echo '<div>THIS VAR IS **NOT** AN ARRAY</div>';
return false;
}
}
$array = array(1, 1, 1);
if ( Calculation_IsArray($array) ){
print_r( $array );
}
答案 4 :(得分:0)
这是主程序中的更新代码,现在收到ok返回值(它不再返回NULL):
// BEGIN MAIN PROGRAM
$x = array(1, 2, 3, 4, 5, 6, 7);
$ResultOfCalculation = Calculation_IsArray($x);
// COME BACK TO HERE AFTER THE FUNCTION RETURNS CALCULATED VALUE
echo '<div>HERE IS THE RETURNED VALUE AND VAR_DUMP BELOW:' . $ResultOfCalculation . '</div>';
var_dump($ResultOfCalculation);