我正在使用一个mysql查询来为嵌套结果(类别和子类别)创建多维数组.
询问
SELECT `categories`.`cat_title`, `subcategories`.`sub_cat_id`, `subcategories`.`sub_cat_title`
FROM (`categories`)
LEFT JOIN `subcategories`
ON `subcategories`.`cat_id` = `categories`.`cat_id`
ORDER BY `categories`.`cat_title
创建多维数组
$array = array();
foreach ($query->result_array() as $row): //query result as a pure array
$array[$row['cat_title']][] = $row['sub_cat_title'];
endforeach;
return $array;
以上返回类别及其各自的子类别.
Array (
[Art] => Array ( [0] => Graphic Design [1] => Painting )
[Literature] => Array ( [0] => Science Fiction [1] => Poetry [2] => Fiction )
[Science] => Array ( [0] => Environmental )
)
是否可以用查询数据(例如子类别id sub_cat_id)替换阵列键?例如
[Literature] => Array ( [8] => Science Fiction [94] => Poetry [5] => Fiction )
解决方法:
是的,在循环中进行设置:
$array[ $row['cat_title'] ][ $row['sub_cat_id'] ] = $row['sub_cat_title'];
但是,可能尚未设置$array [$row [‘cat_title’]],因此您应该预先添加此检查:
if( !isset( $array[$row['cat_title']])) {
$array[$row['cat_title']] = array();
}
您的原始代码不需要此检查,因为$array []不会生成任何通知/警告,但是当您尝试设置特定键时,如果尚未将变量声明为数组,则会生成通知/警告. .
标签:mysql,php
来源: https://codeday.me/bug/20191201/2077448.html