php比较2个关联数组并仅在同一个键上组合

php比较2个关联数组并仅在同一个键上组合,php,arrays,Php,Arrays,我有一个特殊条件,需要仅在同一个键上组合两个关联数组 $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']="val

我有一个特殊条件,需要仅在同一个键上组合两个关联数组

$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_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\u merge($array\u 1,$array\u 2);
foreach($结果为$key=>$value){
回显'.$key.'-
'; }
如果我使用array\u merge,所有键都将组合在一起,就像屏幕截图的右侧一样;那不是我想要的。我只想要屏幕截图的左侧

更简单地说,我想显示$array\u 1键,并仅使用相同的键将$array\u 2加入$array\u 1。


有人能帮忙吗?

你可以试试这样的方法:

$keys = array_keys($array2);
foreach ($array1 as $key => $value) {
    if (in_array($key, $keys)) {
        echo ''.$key.'-<input type="text" value="'.$value.'"><br>';
    }
}
$keys=array\u keys($array2);
foreach($array1作为$key=>$value){
if(在_数组中($key,$key)){
回显'.$key.'-
'; } }
您可以尝试以下方法:

$keys = array_keys($array2);
foreach ($array1 as $key => $value) {
    if (in_array($key, $keys)) {
        echo ''.$key.'-<input type="text" value="'.$value.'"><br>';
    }
}
$keys=array\u keys($array2);
foreach($array1作为$key=>$value){
if(在_数组中($key,$key)){
回显'.$key.'-
'; } }
尝试使用$array\u 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>';
}
$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\u merge($array\u 1,$array\u 2);
foreach($key=>$value的数组_1){
回显'.$key.'-
'; }
尝试使用$array\u 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>';
}
$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\u merge($array\u 1,$array\u 2);
foreach($key=>$value的数组_1){
回显'.$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 $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_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);

在这里,您必须在数组_1中循环,然后使用array_key_exists()函数检查此键轴是否位于区域y_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";

$updatedArray = [];
$finalArray = array_intersect_key($array_1,$array_2);
foreach ($finalArray as $key=>$value){
    $updatedArray[$key] = $array_2[$key];
}

print_r($updatedArray);

在这里,您必须在数组_1中循环,然后使用array_key_exists()函数检查此键轴是否位于区域y_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";

$updatedArray = [];
$finalArray = array_intersect_key($array_1,$array_2);
foreach ($finalArray as $key=>$value){
    $updatedArray[$key] = $array_2[$key];
}

print_r($updatedArray);

你可以试试这个解决方案

$results = array_merge($array_1, array_intersect_key($array_2, $array_1));

你可以试试这个解决方案

$results = array_merge($array_1, array_intersect_key($array_2, $array_1));

有很多方法可以达到你的目标。其中一个是用于仅为与
$array\u 1
相同的键保留
$array\u 2
的值,并仅将此交集合并到
$array\u 1

比如:


有很多方法可以达到你的目标。其中一个是用于仅为与
$array\u 1
相同的键保留
$array\u 2
的值,并仅将此交集合并到
$array\u 1

比如:


嗯,你看了array\u merge了吗?如果
$array\u 1
键包含值怎么办?例如,
$array\u 1['key1']=“value”
$array\u 2['key1']
包含值,预期结果是什么?@Mohammad在调用数组时取决于数组的顺序,要对每个数组进行优先级排序,在调用dmm时对最后一个数组进行优先级排序,你看了array\u merge了吗?如果
$array\u 1
键包含值怎么办?例如,
$array_1['key1']=“value”
$array_2['key1']
包含值,预期结果是什么?@Mohammad在调用数组时取决于数组的顺序,要对每个数组进行优先级排序,在调用great answer时对最后一个数组进行优先级排序,无需循环整个数组。还应在此处添加:@giacomopattalis这不起作用检查此-@giacomopattalis此答案对您链接的问题有何帮助?这是一个具有不同设置的不同问题。@Mohammad key8在结果中缺失array@Bhaskar这就是问题所在,“为了更简单,我想显示$array_1键,并仅使用相同的键将$array_2连接到$array_1中。”回答很好,不需要循环整个数组。还应在此处添加:@giacomopattalis这不起作用检查此-@giacomopattalis此答案对您链接的问题有何帮助?这是一个具有不同设置的不同问题。@Mohammad key8在结果中缺失array@Bhaskar这就是问题所在,“为了更简单,我想显示$array_1键,并仅使用相同的键将$array_2连接到$array_1中。”