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