合并不同的阵列到查询结果一个阵列 [英] Merge distinct arrays into one array in query result

查看:141
本文介绍了合并不同的阵列到查询结果一个阵列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是新手,PHP和codeIgniter。所以我有一个数据库查询结果是这样的:

 结果=阵列(A =阵列(
        [α] =>'1',
        并[b] =>2,
     );B =阵列(
        [α] =>'1',
        并[b] =>3,
     );C =阵列(
        [α] =>'1',
        并[b] =>'4',
     );**和更多...**);

那么,如何将它们合并成一个数组是这样的:

 结果=阵列(     Z =阵列(        [α] =>'1',
        并[b] =>阵列(               [0] =>2,
               [1] =>3,
               [2] =>'4',
        );     );

谢谢你这么多...


解决方案

  $ A =阵列('A'=>'1','B'=>'2' ,'C'=>'3');
$ B =阵列('一个'= GT;'1','B'= GT;'3','D'=>'4');
$ C =阵列('一个'= GT;'1','B'= GT;'4','C'=>'5');$结果=阵列($ A,$ B,$ C);
$ Z =阵列();
的foreach($结果为$设定){
    的foreach($设置为$关键=> $ VAL){
        如果(使用isset($ Z [$关键])){
            如果(is_array($ Z [$关键])){
                $ Z [$关键] [] = $ VAL;
            } ELSEIF($ Z [$关键]!= $ VAL){
                $ Z [$关键] =阵列($ Z [$键],$ VAL);
            }
        }其他{
            $ Z [$关键] = $ VAL;
        }
    }
}的print_r($ Z);

输出

 阵列

    [α] => 1
    并[b] =>排列
        (
            [0] => 2
            [1] => 3
            [2] => 4
        )    [C] =>排列
        (
            [0] => 3
            [1] =>五
        )    并[d] => 4

如果您想每个键唯一值,例如,如果你想避免 A 等于阵列(1,1,2),那么你可以这样做:

  $ Z =阵列();
的foreach($结果为$设定){
    的foreach($设置为$关键=> $ VAL){
        如果(!使用isset($ Z [$关键])){
            $ Z [$关键] =阵列();
        }
        $ Z [$关键] [] = $ VAL;
    }
}的foreach($ Z而言为$ K => $ V){
    $ newv = array_unique($ V);
    如果(计数($ newv)== 1){
        $ Z [$ K] = $ newv [0];
    }其他{
        $ Z [$ K] = $ newv;
    }
}的print_r($ Z);

I'm newbie to PHP and CodeIgniter. So I have a database query result like this:

Result = array(

A = array(
        [a]=>'1',
        [b] =>'2',
     );

B = array(
        [a] =>'1',
        [b] =>'3',
     );

C = array(
        [a] =>'1',
        [b] =>'4',
     );

**and more...**

);

So how can I merge them into one array like this:

Result = array(

     Z = array(

        [a] =>'1',
        [b] => array(

               [0] =>'2',
               [1] =>'3',
               [2] =>'4',
        );

     );

Thanks you so much...

解决方案

$A = array( 'a' => '1', 'b' => '2', 'c' => '3');
$B = array( 'a' => '1', 'b' => '3', 'd' => '4');
$C = array( 'a' => '1', 'b' => '4', 'c' => '5');

$Result = array($A, $B, $C);
$Z = array();
foreach ($Result as $set) {
    foreach ($set as $key => $val) {
        if (isset($Z[$key])) {
            if (is_array($Z[$key])) {
                $Z[$key][] = $val;
            } elseif ($Z[$key] != $val) {
                $Z[$key] = array($Z[$key], $val);
            }
        } else {
            $Z[$key] = $val;
        }
    }
}

print_r($Z);

OUTPUT

Array
(
    [a] => 1
    [b] => Array
        (
            [0] => 2
            [1] => 3
            [2] => 4
        )

    [c] => Array
        (
            [0] => 3
            [1] => 5
        )

    [d] => 4
)

If you want unique values per key, for instance if you want to avoid a equalling array(1, 1, 2), then you can do this:

$Z = array();
foreach ($Result as $set) {
    foreach ($set as $key => $val) {
        if (!isset($Z[$key])) {
            $Z[$key] = array();
        }
        $Z[$key][] = $val;
    }
}

foreach($Z as $k => $v) {
    $newv = array_unique($v);
    if (count($newv) == 1) {
        $Z[$k] = $newv[0];
    } else {
        $Z[$k] = $newv;
    }
}

print_r($Z);

这篇关于合并不同的阵列到查询结果一个阵列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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