仍然只是学习PHP,如果这是愚蠢的抱歉!我有一个循环通过mysql邻接表的函数。我想将此作为数组返回。看起来很好,因为如果我在函数中返回我执行print_r($ path);其中$ path是函数内部的数组,数组按我的意愿打印。
问题是我无法理解为什么我无法通过
访问它$patharray = functioncalled($vars);
我尝试过使用return $ path;并且数组中只有print_r
,但它会一直返回NULL
。
function getParPath($mysqli, $showpar, $path) {
// Get Parent Path
$query ="select loc_id, loc_name, loc_parent from locations where loc_id = ? LIMIT 0,1";
if ($stmt = mysqli_prepare($mysqli, $query)) {
/* pass parameters to query */
mysqli_stmt_bind_param($stmt, "s", $showpar);
/* run the query on the database */
mysqli_stmt_execute($stmt);
/* store result */
mysqli_stmt_store_result($stmt);
/* assign variable for each column to store results in */
mysqli_stmt_bind_result($stmt, $loc_id, $loc_name, $loc_parent);
/* fetch values */
while (mysqli_stmt_fetch($stmt)) {
$path[] = $loc_name;
if ($loc_parent !='0'){
getParPath($mysqli, $loc_parent, $path);
}
if ($loc_parent =='0'){
$path = array_reverse($path);
return $path; // uncommented per answers below.
//print_r($path); //commented out per answers below.
}
}
}
}
$patharray = getParPath($mysqli, $showcld, $path);
//print_r(getParPath($mysqli, $showcld, $path)); // removed per answers below
var_dump($patharray); //removed echo per answers below
exit;
返回:
Array
(
[0] => BuildingA
[1] => FloorA
[2] => RoomA
)
Array
(
[0] => BuildingA
[1] => FloorA
[2] => RoomA
)
NULL
从最后一行可以看出,我设置为函数调用的数组$patharray
是NULL
。如果我在函数内部尝试print_r
,则会打印一个数组,如果我直接尝试print_r
函数,它将返回一个数组。但不是我可以使用的对象。
答案 0 :(得分:3)
您必须return $path;
而不仅仅是echo
或print_r
。
$path = array_reverse($path);
return $path; //Uncomment this line
//print_r($path); //Comment out this line
您还需要更改此项,您没有将$ path设置为等于结果:
if ($loc_parent !='0'){
$path = getParPath($mysqli, $loc_parent, $path);
}
还要摆脱if测试,因为它会一直运行直到它到达底部然后你需要返回。
if ($loc_parent !='0'){
$path = getParPath($mysqli, $loc_parent, $path);
}
$path = array_reverse($path);
return $path;