返回变量在PHP中不起作用(即没有返回值!)

返回变量在PHP中不起作用(即没有返回值!),php,return,return-value,Php,Return,Return Value,我更喜欢用Python语言编程,但必须为特定的web站点应用程序项目使用PHP 在PHP中,我试图将一个值从一个函数“返回”到主程序环境(用于后续计算),但无论我尝试什么,在我的函数中计算的值都不会返回该值(但从函数中回传可以正常工作) 在Python中,我从来没有遇到过返回变量的问题:即,从函数返回的所有值都可以被调用生成返回值的函数的主程序和/或其他函数访问 有人能告诉我如何解决这个问题吗?在过去的两天里,我一直在搜索谷歌和其他网站,但都没有成功。我有很多O'Reilly计算机书籍,包括许多

我更喜欢用Python语言编程,但必须为特定的web站点应用程序项目使用PHP

在PHP中,我试图将一个值从一个函数“返回”到主程序环境(用于后续计算),但无论我尝试什么,在我的函数中计算的值都不会返回该值(但从函数中回传可以正常工作)

在Python中,我从来没有遇到过返回变量的问题:即,从函数返回的所有值都可以被调用生成返回值的函数的主程序和/或其他函数访问

有人能告诉我如何解决这个问题吗?在过去的两天里,我一直在搜索谷歌和其他网站,但都没有成功。我有很多O'Reilly计算机书籍,包括许多关于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>';
    }

}
我希望程序调用函数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);