返回变量在PHP中不起作用(即没有返回值!)
我更喜欢用Python语言编程,但必须为特定的web站点应用程序项目使用PHP 在PHP中,我试图将一个值从一个函数“返回”到主程序环境(用于后续计算),但无论我尝试什么,在我的函数中计算的值都不会返回该值(但从函数中回传可以正常工作) 在Python中,我从来没有遇到过返回变量的问题:即,从函数返回的所有值都可以被调用生成返回值的函数的主程序和/或其他函数访问 有人能告诉我如何解决这个问题吗?在过去的两天里,我一直在搜索谷歌和其他网站,但都没有成功。我有很多O'Reilly计算机书籍,包括许多关于PHP的书籍,在这些书籍中,我交叉引用了我的研究成果,并尽可能阅读了关于返回函数的所有内容——看起来我做的一切都是正确的,甚至明确声明了要返回的值。这是至关重要的,我能够返回的价值观,并有权访问这些价值观,以继续在这个项目上的发展-否则,我卡住了,如果我不能返回价值观,以进一步处理 以下是相关代码片段:返回变量在PHP中不起作用(即没有返回值!),php,return,return-value,Php,Return,Return Value,我更喜欢用Python语言编程,但必须为特定的web站点应用程序项目使用PHP 在PHP中,我试图将一个值从一个函数“返回”到主程序环境(用于后续计算),但无论我尝试什么,在我的函数中计算的值都不会返回该值(但从函数中回传可以正常工作) 在Python中,我从来没有遇到过返回变量的问题:即,从函数返回的所有值都可以被调用生成返回值的函数的主程序和/或其他函数访问 有人能告诉我如何解决这个问题吗?在过去的两天里,我一直在搜索谷歌和其他网站,但都没有成功。我有很多O'Reilly计算机书籍,包括许多
// 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>';
}
}
我希望程序调用函数Calculation_IsArray(),并将要检查的数组($ArrayOfValues)传递给它。您可以从下面的输出中看到,数组被传递、检查并确认为数组类型,并且FOREACH循环以及IF/ELSE条件都工作正常,并响应正确的输出。但是,上面的代码不返回任何值,因为在“return”之后,当我检查可从主程序访问的返回值(即已检查的数组)时,可以看到回显的空值
以下是返回到浏览器屏幕的结果(输出):
此变量是一个数组
返回数组=
空的
价值$Var_IsArray=
空的
数组键元素的计数=2
数组键元素是数字的
键=0,值=数组
数组键元素的计数=2
数组键元素是数字的
KEY=1,VALUE=Array 我在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);
为什么PHP不将我的值/变量返回主程序?您可以将函数简化为以下内容,使其始终返回某些内容(真、假)
函数计算\u IsArray($ArrayAny){
echo是数组($ArrayAny)?“此变量是数组”:“此变量**不是**数组”;
返回为_数组($ArrayAny);
}
您可以将函数简化为以下内容,使其始终返回某些内容(true、false)
函数计算\u IsArray($ArrayAny){
echo是数组($ArrayAny)?“此变量是数组”:“此变量**不是**数组”;
返回为_数组($ArrayAny);
}
希望这将有助于:
// 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 );
}
//函数
函数计算\u IsArray($ArrayAny){
if(is_数组($ArrayAny)){
echo“此变量是一个数组”;
返回true;
}否则{
echo“此变量**不是**数组”;
返回false;
}
}
$array=array(1,1,1);
if(计算_IsArray($array)){
打印(数组);
}
希望这将有助于:
// 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 );
}
//函数
函数计算\u IsArray($ArrayAny){
if(is_数组($ArrayAny)){
echo“此变量是一个数组”;
返回true;
}否则{
echo“此变量**不是**数组”;
返回false;
}
}
$array=array(1,1,1);
if(计算_IsArray($array)){
打印(数组);
}
当您从函数返回某些内容时,它不会使变量本身在调用范围内(即函数外部)可用。换句话说,$Var_IsArray
仅存在于函数内部
只返回变量的内容,您必须在调用函数的地方立即使用结果;e、 g.将其存储以备将来参考,将其传递给另一个函数,或在某个条件下对其进行测试
例如:
在本例中,$somedata
将保存以前存储在$vals
中的数组
这是大多数编程语言中返回语句(或等效功能)的标准行为。还有其他从函数中获取变量的方法,例如使用全局变量。一般来说,它们不是好的实践
我以前也使用过Python,我认为它没有什么不同(除非我错过了一个主要的语言特性)。您可能需要仔细检查Python代码是否正在执行您认为它正在执行的操作,否则将来可能会出现一些令人讨厌的错误。当您从函数返回某个内容时,它不会使变量本身在调用范围内(即函数外)可用。换句话说,$Var_IsArray
仅存在于函数内部
只返回变量的内容,您必须在调用函数的地方立即使用结果;e、 g.将其存储以备将来参考,将其传递给另一个函数,或在某个条件下对其进行测试
例如:
在本例中,$somedata
最终将保存以前使用过的数组
function Calculation_IsArray( $ArrayAny ){
echo is_array($ArrayAny) ? '<div>THIS VAR IS AN ARRAY</div>' : '<div>THIS VAR IS **NOT** AN ARRAY</div>';
return is_array($ArrayAny);
}
<?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);
}
// 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 );
}
function foo()
{
$vals = ['red', 'green', 'blue'];
return $vals;
}
$somedata = foo();
// 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);