2012-02-23 156 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]);