php替换数组id键 [英] php replace array id keys

查看:50
本文介绍了php替换数组id键的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用单个 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆