0

私はphpを初めて使用し、まだ言語を学んでいます。

2つの配列があるとしましょう

例えば

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
)

1番目の配列のキーを2番目に取得するにはどうすればよいですか。私が言っているのは、house_id, name, floor, unit2番目の配列から必要なだけで、残りの情報を破棄するということです。

ただし、それらのキーは同じでも動的でもありません。つまり、返された最初の配列キーは2番目にも存在しますが、追加情報があります。上記の情報は単なる例であり、キーは異なる場合がありますが、最初の配列のキーが 2 番目の配列にも含まれています。

私はこれを試しましたが、うまくいきません:

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

これを試して

$result_array = array_intersect_key($arr2, $arr1);
于 2012-10-03T07:39:01.920 に答える
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

から条件を変更

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

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

isset変数が設定されているかどうかを確認するために使用されます。

于 2012-10-03T07:38:32.173 に答える