まだ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
直接関数に入ろうとすると配列が返されます。しかし、私が使用できるオブジェクトにはなりません。