PHP根据它们的值组合2个数组

时间:2017-08-14 11:10:50

标签: php arrays

我需要根据它们的值组合2个数组。

他们看起来像这样:

首先:

Array
(
    [8] => Array
        (
            [AAA] => 1000
        )

    [12] => Array
        (
            [BBB] => 1000
        )

    [14] => Array
        (
            [CCC] => 10
        )
}

第二

Array
(
    [CCC] => 5145
    [AAA] => 451
    [BBB] => 3020
}

我想要做的是通过两个数组,比较它们的AAA,BBB,CCC值,如果它们是相同的,则创建第三个数组,如下所示:

   Array
    (
        [8] => Array
            (
                [AAA] => 1000,
                [AAA_2] => 451
            )

        [12] => Array
            (
                [BBB] => 1000,
                [BBB_2] => 3020
            )

        [14] => Array
            (
                [CCC] => 10,
                [CCC_2] => 5145
            )
    }

关于如何做到这一点的任何想法?尝试使用array_combine()没有运气。

3 个答案:

答案 0 :(得分:0)

我似乎是你的代码,并尝试根据你的提及创建第三个数组,并在我的网站上确定。请参考以下代码并进行检查。

$first = Array('8' => Array('AAA' => 1000),
              '12' => Array('BBB' => 1000),
              '14' => Array('CCC' => 10));
$second = Array('CCC' => 5145,
                'AAA' => 451,
                'BBB' => 3020);
$third = array();
foreach ($first as $key => $value) {
    foreach($value as $k => $v){
      if(array_key_exists($k,$second)){
          $third[$key] = array($k => $v, $k.'_2' => $second[$k]);
      }
    }
}
echo '<pre>';
print_r($third);

答案 1 :(得分:0)

此任务只需要一个foreach循环,而不是两个。 $first将是输出数组。

代码:(Demo

$first=[8=>["AAA"=>1000],12=>["BBB"=>1000],14=>["CCC"=>10]];
$second=["CCC"=>5145,"AAA"=>451,"BBB"=>3020];
foreach($first as &$a){  // modify $first subarrays by reference
    $k=key($a);  // temporarily store first element's key
    if(isset($second[$k])){  // if key is found in $second
        $a["{$k}_2"]=$second[$k];  // add assoc element to $first
    }
}
var_export($first);  // display updated $first array

输出:

array (
  8 => 
  array (
    'AAA' => 1000,
    'AAA_2' => 451,
  ),
  12 => 
  array (
    'BBB' => 1000,
    'BBB_2' => 3020,
  ),
  14 => 
  array (
    'CCC' => 10,
    'CCC_2' => 5145,
  ),
)

答案 2 :(得分:-1)

试试这个,希望它有效。

$ first = array(8 =&gt; array(&#34; AAA&#34; =&gt; 1000),12 =&gt; array(&#34; BBB&#34; =&gt; 1000),14 = &GT;阵列(&#34; CCC&#34 =大于10));

$ second = array(&#34; CCC&#34; =&gt; 5145,&#34; AAA&#34; =&gt; 451,&#34; BBB&#34; =&gt; 3020);

foreach($ first为$ fKey =&gt; $ fVal){

foreach($fVal as $k => $v){

    if(array_key_exists($k, $second)){
        $newKey = $k."_2";
        $first[$fKey][$newKey] = $v;
    }
}

}

的print_r($第一);