Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php替换数组id键_Php_Mysql - Fatal编程技术网

php替换数组id键

php替换数组id键,php,mysql,Php,Mysql,我使用一个mysql查询为嵌套结果(类别和子类别)创建一个多维数组 质疑 创建多维数组 $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; 以上返回类别及其各自的子类别 Arr

我使用一个mysql查询为嵌套结果(类别和子类别)创建一个多维数组

质疑

创建多维数组

$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
子类别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[]
不会生成任何通知/警告,但当您尝试设置特定键时,如果变量尚未声明为数组,则会生成通知/警告。

您可以执行以下操作:

foreach($array as $key=>$val){
   unset($array[$key]);
   $newKey = //New value

   $array[$newKey] = $val];
}

谢谢这比我想象的要容易<代码>cat_title将始终设置,而我将检查某个类别是否存在子类别,并显示它们(如果存在)。
foreach($array as $key=>$val){
   unset($array[$key]);
   $newKey = //New value

   $array[$newKey] = $val];
}