我有2个数组,我需要通过我的特定算法比较这些数组。
首先,我的阵列:
$old = [
'pencil' => 'red',
'eraser' => 'green',
'bag' => 'blue'
];
$new = [
'pencil' => '',
'eraser' => '',
'computer' => 'mac',
'bag' => '',
'activity' => [
'jumping',
'pool',
'reading'
]
];
然后,我想得到这个输出:
$output = [
'pencil' => 'red', // old value
'eraser' => 'green', // old value
'bag' => 'blue', // old value
'computer' => 'mac', // new key & values
'activity' => [ // new key & values
'jumping',
'pool',
'reading'
]
];
因此,旧数组和新数组中的元素(数组项)将添加到输出中,但值应来自旧数组。
新数组中的元素(数组项)应该完全转移到输出。
我想用照片附件支持我的问题(照片上的序列可能与我的阵列上的序列不匹配($ old,$ new)):
答案 0 :(得分:1)
使用array_merge以合并两个数组的元素:
$result = array_merge($new, $old);
第二个数组($ old)中的值将合并到第一个数组上,因此如果两个数组中都有一个键,则第二个数组将显示在结果中。
答案 1 :(得分:0)
我认为以下代码可以实现您的目标:
$output = []
foreach($old as $key => $value){
$output[$key] = $value;
}
foreach($new as $key => $value){
if(!array_key_exists($key, $output)){
$output[$key] = $value;
}
}
答案 2 :(得分:0)
这是我的解决方案,
$old = [
'pencil' => 'red',
'eraser' => 'green',
'bag' => 'blue'
];
$new = [
'pencil' => '',
'eraser' => '',
'computer' => 'mac',
'bag' => '',
'activity' => [
'jumping',
'pool',
'reading'
]
];
$output = [];
foreach ($new as $newkey => $newvalue) {
if($newvalue!=""){
$output = [$old+$new];
}
}
echo "<pre>";
print_r($output);
echo "</pre>";
exit;
这里的输出看起来像,
Array
(
[0] => Array
(
[pencil] => red
[eraser] => green
[bag] => blue
[computer] => mac
[activity] => Array
(
[0] => jumping
[1] => pool
[2] => reading
)
)
)