将函数结果返回到数组中

时间:2012-02-23 07:02:10

标签: php arrays

我将一个数组传递给一个函数,并期望该函数在其中存储值。这是我的代码

功能 -

    function GetDetailsById ($iStudentId, $aDetailsId)
    {
        /* SQL */

        while ($row = mysql_fetch_array($result))
        {
           array_push($aDetailsId, $row[0]);
        }
    }

用法 -

    $aDetailsId = array();
    $oDetailsTable->GetDetailsById("1", $aDetailsId)

当我尝试

print_r($aDetailsId)

数组没有显示任何内容。我是以正确的方式做到的吗?

4 个答案:

答案 0 :(得分:2)

您的数组需要通过引用函数传递;这意味着应该以这种方式定义函数:

function GetDetailsById ($iStudentId, & $aDetailsId)
{
  // ...
}

有关更多信息,请参阅Making arguments be passed by reference


或者你可以使用你的函数return its result - 这可能是更好的主意(查看调用函数的代码,你立即知道它的作用)

function GetDetailsById ($iStudentId)
{
    $result = array();
    // TODO here, fill $result with your data
    return $result;
}

并调用函数:

$aDetailsId = $oDetailsTable->GetDetailsById("1");

答案 1 :(得分:1)

这是因为默认情况下参数按值传递,这意味着只有变量的值传递给函数,而不是变量本身。无论你对函数内部的值做什么都不会影响函数外部的原始值。

两个选项:

  1. return来自函数的修改后的值。
  2. Pass the parameter by reference

    function GetDetailsById ($iStudentId, &$aDetailsId) ...
    

答案 2 :(得分:0)

首先计算/检查您的resutl是否包含任何结果集。并尝试使用'&'在数组的参数

function GetDetailsById ($iStudentId, &$aDetailsId)

答案 3 :(得分:0)

请将功能声明更改为,

function GetDetailsById ($iStudentId, &$aDetailsId)

array_push电话中还有一个错误。将其更改为,

array_push($aDetailsId, $row[0]);