将函数结果返回到数组
问题描述:
我正在将一个数组传递给一个函数,并期望函数将值存储在函数中。这里是我的代码将函数结果返回到数组
的功能 -
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)
阵列显示什么。我是否正确地做这件事?
答
您的数组需要通过引用传递给函数;这意味着该函数应该是这样定义的:
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");
答
这是因为参数是按值默认传递,这意味着变量的唯一值传递给函数,而不是变量本身。无论你对函数内部的值做什么,都不会影响函数外部的原始值。
两个选项:
-
return
从函数修改后的值。 -
Pass the parameter by reference:
function GetDetailsById ($iStudentId, &$aDetailsId) ...
答
第一计数/检查resutl
是包含任何结果集。并尝试在阵列
function GetDetailsById ($iStudentId, &$aDetailsId)
答
请更改函数声明的参数使用“&”,
function GetDetailsById ($iStudentId, &$aDetailsId)
有在array_push
通话一个多错误。更改为,
array_push($aDetailsId, $row[0]);
是不是它的错字:'array_push($ aDetailsId),$ row [0]);'' – diEcho 2012-02-23 07:04:58