サブカテゴリからカテゴリへのブレッドクラム情報をいくつかのレベルで取得するための再帰関数に取り組んでいます。この情報を取得することはできますが、この関数で配列の配列を返すと、内容を表示するために print_r を実行できません。
怒鳴る前にコードをお見せしましょう。
function breadcrumb_array ($id, $breadcrumb = array()) {
$cat_info = get_subcat_data($id);
if ($cat_info["parent_id"]>0) {
$breadcrumb[] = $cat_info;
breadcrumb_array($cat_info["parent_id"], $breadcrumb);
} else {
echo "About to return the value...";
//print_r(array_reverse($breadcrumb));
return array_reverse($breadcrumb);
}
}
$breadcrumb = breadcrumb_array(8);
print_r($breadcrumb);
print_r(...)
関数内でコメントを外すと、配列の配列が適切に表示されます。
( [0] => Array
( [id] => 3
[nombre] => Muebles
[parent_id] => 1
[parent_urlname] =>
[parent_nombre] => Productos
)
[1] => Array
( [id] => 6
[nombre] => Sillas
[parent_id] => 3
[parent_urlname] =>
[parent_nombre] => Muebles
)
[2] => Array
(
[id] => 8
[nombre] => Sillas de cocina
[parent_id] => 6
[parent_urlname] =>
[parent_nombre] => Sillas
)
)
そのため、関数を呼び出した後、最後に print_r を実行すると、同じ配列の配列が出力されることが期待されます。しかし、私は何も得ません。関数内で問題が発生する可能性があるすべてをテストしたと思います。戻り値を出力するときに何が問題になるのか、私には本当にわかりません。手伝ってくれますか?
PS: 誰かがそれを必要とする場合、get_subcat_id()
関数は次のようになります:
//Retrieves mroe info about a certain categories and its parent
function get_subcat_data ($id) {
global $connection;
$query = "SELECT tblCategoria.id, tblCategoria.nombre, tblCategoria.parent_id, tblParents.urlname AS parent_urlname, tblParents.nombre AS parent_nombre
FROM tblCategoria JOIN tblCategoria AS tblParents ON tblCategoria.parent_id = tblParents.id
WHERE tblCategoria.id = {$id}
LIMIT 1";
$cats1 = mysql_query($query, $connection);
confirm_query($cats1);
$cats1 = mysql_fetch_assoc($cats1);
return $cats1;
}