我有一个特殊情况需要在同一个键上组合两个关联数组
$array_1['key1']="";
$array_1['key2']="";
$array_1['key3']="";
$array_1['key4']="";
$array_1['key5']="";
$array_1['key6']="";
$array_1['key7']="";
$array_2['key1']="value1";
$array_2['key3']="value2";
$array_2['key4']="value3";
$array_2['key8']="value4";
$results=array_merge($array_1,$array_2);
foreach ($results as $key=>$value){
echo ''.$key.'-<input type="text" value="'.$value.'"><br>';
}
如果我使用 array_merge ,所有键将组合在一起,就像截图的右侧一样;那不是我想要的。我只想要截屏的左侧
为了简单起见,我想显示$ array_1键并将$ array_2加入$ array_1,只使用相同的键。
答案 0 :(得分:4)
有很多方法可以达到目标。其中之一是使用qemu man page仅将$array_2
的值保留为与$array_1
共有的键,并将此交集仅合并到$array_1
。
类似的东西:
$results = array_merge($array_1, array_intersect_key($array_2, $array_1));
答案 1 :(得分:2)
尝试使用$ array_1的键来显示所需的结果
$array_1['key1']="";
$array_1['key2']="";
$array_1['key3']="";
$array_1['key4']="";
$array_1['key5']="";
$array_1['key6']="";
$array_1['key7']="";
$array_2['key1']="value1";
$array_2['key3']="value2";
$array_2['key4']="value3";
$array_2['key8']="value4";
$results=array_merge($array_1,$array_2);
foreach ($array_1 as $key => $value){
echo ''.$key.'-<input type="text" value="'.$results[$key].'"><br>';
}
答案 2 :(得分:1)
$array_1['key1']="";
$array_1['key2']="";
$array_1['key3']="";
$array_1['key4']="";
$array_1['key5']="";
$array_1['key6']="";
$array_1['key7']="";
$array_2['key1']="value1";
$array_2['key3']="value2";
$array_2['key4']="value3";
$array_2['key8']="value4";
foreach ($array_1 as $k => $v) {
if(isset($array_2[$k])){
$array_1[$k] = empty($array_1[$k])?$array_2[$k]:$array_1[$k];
}
}
echo "<pre>";
print_r($array_1);
结果是
Array
(
[key1] => value1
[key2] =>
[key3] => value2
[key4] => value3
[key5] =>
[key6] =>
[key7] =>
)
答案 3 :(得分:1)
这里你必须循环遍历array_1然后使用array_key_exists()函数检查这个关键轴是否在isay_2中,如果是,则设置$ array_1的值[key] = $ array_2 [key]
$array_1['key1']="";
$array_1['key2']="";
$array_1['key3']="";
$array_1['key4']="";
$array_1['key5']="";
$array_1['key6']="";
$array_1['key7']="";
$array_2['key1']="value1";
$array_2['key3']="value2";
$array_2['key4']="value3";
$array_2['key8']="value4";
foreach ($array_1 as $key=>$value){
if(array_key_exists($key,$array_2)){
$array_1[$key]=$array_2[$key];
}
print_r($array_1);
答案 4 :(得分:1)
您可以尝试此解决方案
$array_1['key1']="";
$array_1['key2']="";
$array_1['key3']="";
$array_1['key4']="";
$array_1['key5']="";
$array_1['key6']="";
$array_1['key7']="";
$array_2['key1']="value1";
$array_2['key3']="value2";
$array_2['key4']="value3";
$array_2['key8']="value4";
$updatedArray = [];
$finalArray = array_intersect_key($array_1,$array_2);
foreach ($finalArray as $key=>$value){
$updatedArray[$key] = $array_2[$key];
}
print_r($updatedArray);
答案 5 :(得分:0)
你可以尝试这样的事情:
$keys = array_keys($array2);
foreach ($array1 as $key => $value) {
if (in_array($key, $keys)) {
echo ''.$key.'-<input type="text" value="'.$value.'"><br>';
}
}