繁体   English   中英

合并基于相同值和密钥PHP的数组

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM