[英]Merge array base on same value and key PHP
我在蛋糕php中有一些代码
$find_parent_category = $this->Project->Category->find('list',array(
'fields' => array('Category.Category','id'),
'order' => array('Category.Category'),
'conditions' => array(
'Category.id' => $sub_category
)
));
pr($find_parent_category)
产量
Array
(
[Accounting & Financial] => 1
[Data Management] => 7
)
$find_sub_category = $this->Project->Category->find('list',array(
'fields' => array('Category.Category','id','parent_id'),
'order' => array('Category.Category'),
'conditions' => array(
'Category.parent_id' => $sub_category
)
));
pr($find_sub_category)
产量
Array
(
[1] => Array
(
[Accounting Audit & Assurance] => 24
[Accounting Services] => 25
[Accounting Software] => 26
)
[7] => Array
(
[Analytical Tools] => 27
[Cloud Computing] => 28
[Data Bases] => 29
)
)
我需要这样的输出
Array
(
[Accounting & Financial] => Array
(
[Accounting Audit & Assurance] => 24
[Accounting Services] => 25
[Accounting Software] => 26
)
[Data Management] => Array
(
[Analytical Tools] => 27
[Cloud Computing] => 28
[Data Bases] => 29
)
)
不需要合并数组,你已经有两个相关的数组,所以只需遍历数组,将你想要的键映射到实际的键,并创建一个新的数组,如下所示:
$new_array = array();
foreach($find_parent_category as $key => $elm)
{
$new_array[$key] = $find_sub_category[$elm];
}
使用字符串作为这样的键最终会让你陷入困境。 最好将数字键保留在$find_sub_category
,并将原始$find_parent_category
查询的输出翻转到:
'fields' => array('id','Category.Category'),
这样你的$find_parent_category
就是这样的
Array
(
[1] => Accounting & Financial
[7] => Data Management
)
这使您可以在使用$find_sub_category
时将其用作查找表来解析这些顶级键
我已经在相同的键上合并了数组.......
$find_parent_category = $this->Project->Category->find('list',array(
'fields' => array('Category.id','Category'),
'order' => array('Category.Category'),
'conditions' => array(
'Category.id' => $sub_category
)
));
$find_sub_category = $this->Project->Category->find('list',array(
'fields' => array('Category.Category','id','parent_id'),
'order' => array('Category.Category'),
'conditions' => array(
'Category.parent_id' => $sub_category
)
));
}
function merge_common_keys(){
$arr = func_get_args();
$num = func_num_args();
$keys = array();
$i = 0;
for($i=0;$i<$num;++$i){
$keys = array_merge($keys, array_keys($arr[$i]));
}
$keys = array_unique($keys);
$merged = array();
foreach($keys as $key){
$merged[$key] = array();
for($i=0;$i<$num;++$i){
$merged[$key][] = isset($arr[$i][$key])?$arr[$i][$key]:null;
}
}
return $merged;
}
$merged = merge_common_keys($find_parent_category,$find_sub_category);
pr($merged);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.