我需要根据它们的值组合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()没有运气。
答案 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($第一);