Все еще только изучаю 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
выполнить функцию напрямую, она вернет массив. Но не в объект, который я могу использовать.