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

时间:2016-07-24 05:38:03

标签: php return return-value

我更喜欢使用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没有将我的值/变量返回给主程序?

5 个答案:

答案 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 &raquo;'); ?>
<?php previous_post_link('&laquo; %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)

好吧,所以当彼得布鲁姆菲尔德回应并写下他的正确答案时,我正在自我攻击并尝试不同的事情,并记得我在Python中所做的是使变量等于函数调用!!我试过了,现在它恢复了我用该功能所做的任何事情,感谢上帝!

这是主程序中的更新代码,现在收到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);