2012-02-23 143 views
0

我正在将一个数组传递给一个函数,并期望函数将值存储在函数中。这里是我的代码将函数结果返回到数组

的功能 -

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) 

阵列显示什么。我是否正确地做这件事?

+0

是不是它的错字:'array_push($ aDetailsId),$ row [0]);'' – diEcho 2012-02-23 07:04:58

回答

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. return从函数修改后的值。
  2. Pass the parameter by reference

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

第一计数/检查resutl是包含任何结果集。并尝试在阵列

function GetDetailsById ($iStudentId, &$aDetailsId) 
0

请更改函数声明的参数使用“&”,

function GetDetailsById ($iStudentId, &$aDetailsId) 

有在array_push通话一个多错误。更改为,

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