php替换数组id键 [英] php replace array id keys
问题描述
我正在使用单个 mysql 查询为嵌套结果(类别和子类别)创建多维数组.
I'm using a single mysql query to create a multidimensional array for nested results (categories and subcategories).
查询
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;
以上返回类别及其各自的子类别.
The above returns categories and and their respective subcategories.
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
)替换数组键?例如
Is it possible to replace the array keys with query data like the subcategory id sub_cat_id
? For example
[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']]
可能还没有设置,所以你应该事先添加这个检查:
But, $array[$row['cat_title']]
might not be set yet, so you should add this check beforehand:
if( !isset( $array[$row['cat_title']])) {
$array[$row['cat_title']] = array();
}
您的原始代码不需要此检查,因为 $array[]
不会生成任何通知/警告,但是当您尝试设置特定键时,如果出现以下情况,则会生成通知/警告该变量尚未声明为数组.
Your original code doesn't need this check since $array[]
will not generate any notices/warnings, but when you try to set a specific key, that will generate a notice/warning if the variable isn't already declared as an array.
这篇关于php替换数组id键的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!