2016-11-09 7 views
0

は下に次の唯一の違いを取得し、私は3番目の配列に結果を格納したい配列の比較ですが、私が比較し、同じ値にarray_diff()関数のようなものを削除したい二つの配列がある

$array1 = Array([0] => Array([a] => XYZ,[b] => ABC)) 
$array2 = Array([0] => Array([a] => XYZ,[b] => ABC),[1] => Array([a] => PQR,[b] => XYZ)) 
$array3 = array_diff($array1,$array2); 
//$array3 value must return this value Array([1] => Array[a]=> PQR,[b] => XYZ) 

Iドン私は何を間違っているのか分からないけど、配列が文字列に変換できないというエラーが出ています。誰もこれで私を助けることができますか?事前

答えて

0

で おかげであなたがここにあなたの$array2は常に$array1より多くの要素が含まれていることを確信している場合は、あなたのソリューションは、次のとおりです。

$array1 = array(array('a' => 'XYZ','b' => 'ABC')); 
$array2 = array(array('a' => 'XYZ','b' => 'ABC'),array('a' => 'PQR','b' => 'XYZ')); 
$limit = count($array2); 
$array3 = array(); 
for($i=0;$i<$limit;$i++){ 
    if(empty($array1[$i])) 
    $array3[] = $array2[$i]; 

    $array3[] = array_diff($array1[$i],$array2[$i]); 
} 
foreach($array3 as $k=>$a3){ 
    if(empty($a3)||($a3===NULL)) 
    continue; 
    $result[$k] = $a3; 
} 
var_dump($result); //array(1) { [1]=> array(2) { ["a"]=> string(3) "PQR" ["b"]=> string(3) "XYZ" } } 

は、array_diffが1次元配列上で動作し、あなたに2D配列を提供していたのでご注意くださいそれがなぜ機能していないのかということです。

また、$array1$array2を定義する方法も間違っていますので、この解決策を正しい構文で確認してください。

私はそれが

+0

おかげアブヘイマウリヤあなたのソリューションは本当にコーディングハッピー、私 –

+0

何の問題を助けることができます願っています! – Learner