0

我是 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;
    }
}
4

6 回答 6

2

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

$newArray = array_intersect_key($array2, $array1);
于 2012-10-03T07:36:30.417 回答
2

使用array_intersect_key()

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

代码

var_dump(array_intersect_key($array1, $array2));
于 2012-10-03T07:38:14.363 回答
1
foreach($arr2 as $key=>$val){
   if(!array_key_exists($key,$arr1))        
   unset($arr2[$key]);
}
于 2012-10-03T07:36:48.160 回答
0

从改变条件

if(isset($arr2[$k]))

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

andisset用于检查变量是否设置。

于 2012-10-03T07:38:32.173 回答
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]); 
    }
}
于 2012-10-03T07:38:45.927 回答
0

试试这个

$result_array = array_intersect_key($arr2, $arr1);
于 2012-10-03T07:39:01.920 回答