我是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;
}
}
答案 0 :(得分:2)
您可以使用array_intersect_key来合并数组。
$newArray = array_intersect_key($array2, $array1);
答案 1 :(得分:2)
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);