Php两个不同的数组,具有相同的键

时间:2012-10-03 07:34:12

标签: php arrays

我是php的新手,还在学习语言,

假设我有两个数组

例如

Array
(
    [house_id] => 6
    [name] => Lake Villa
    [floor] => 5
    [unit] => 25
)

Array
(
    [house_id] => 6
    [name] => Lake Villa
    [floor] => 5
    [unit] => 25
    [parking_id] => 9
    [resident_count] => 4
)

我如何将第一个数组的键输入到第二个,我所说的是,我只需要来自第二个数组的house_id, name, floor, unit并丢弃其余的信息。

但是,它们的键不相同且是动态的,这意味着返回的第一个数组键也存在于第二个但具有附加信息。上面的信息只是一个例子,键可能会有所不同,但第一个数组上的任何键都包含在第二个数组上。

我试过了,但是没有用:

foreach($arr1 as $k=>$v) {
    foreach($arr2 as $j=>$w) {
        if(isset($arr2[$k]))
            $arr[$k] = $w;
    }
}

6 个答案:

答案 0 :(得分:2)

您可以使用array_intersect_key来合并数组。

$newArray = array_intersect_key($array2, $array1);

答案 1 :(得分:2)

使用array_intersect_key()

  

array_intersect_key()返回一个包含所有条目的数组   array1,其中包含所有参数中的键。

代码

var_dump(array_intersect_key($array1, $array2));

答案 2 :(得分:1)

foreach($arr2 as $key=>$val){
   if(!array_key_exists($key,$arr1))        
   unset($arr2[$key]);
}

答案 3 :(得分:0)

改变条件
if(isset($arr2[$k]))

if($arr1[$k] == $arr2[$j])   // it will work.

isset用于检查变量是否已设置。

答案 4 :(得分:0)

试试这个:

foreach($arr2 as $k=>$v) {
    //Check if key is in first array
    if(!isset($arr1[$k])) {
        //Key not in first array, remove from second array. 
        unset($arr2[$k]); 
    }
}

答案 5 :(得分:0)

试试这个

$result_array = array_intersect_key($arr2, $arr1);