
二つの多次元配列の片方にだけ含まれるものを抽出したいです。
具体的には、以下のような配列Aと配列Bを比べて、片方にだけ含まれる組み合わせ、すなわちこの場合は
[flag] => 88
[status] => 25
と
[flag] => 122
[status] => 25
の組み合わせが、最終的に得たい結果です。
php
1配列A 2Array 3( 4 [0] => Array 5 ( 6 [flag] => 2 7 [status] => 25 8 ) 9 10 [1] => Array 11 ( 12 [flag] => 64 13 [status] => 25 14 ) 15 16) 17 18配列B 19Array 20( 21 [0] => Array 22 ( 23 [flag] => 122 24 [status] => 25 25 ) 26 [1] => Array 27 ( 28 [flag] => 2 29 [status] => 25 30 ) 31 32 [2] => Array 33 ( 34 [flag] => 64 35 [status] => 25 36 ) 37 38 [3] => Array 39 ( 40 [flag] => 88 41 [status] => 25 42 ) 43 44) 45
試したコードは以下の通り。
php
1<?php 2//配列A 3$ArrayA[] = array('flag'=>'2','status'=>'25'); 4$ArrayA[] = array('flag'=>'64','status'=>'25'); 5 6//配列B 7$ArrayB[] = array('flag'=>'122','status'=>'25'); 8$ArrayB[] = array('flag'=>'2','status'=>'25'); 9$ArrayB[] = array('flag'=>'64','status'=>'25'); 10$ArrayB[] = array('flag'=>'88','status'=>'25'); 11 12 13 14foreach ($ArrayB as $key => $valarr) { 15 16 foreach ( $ArrayA as $key2 => $valarr2) { 17 $returnArray[] = array_diff_assoc($valarr, $valarr2); 18 } 19} 20 21echo "<pre>"; 22print_r($returnArray); 23echo "</pre>";
差分をとるからdiffかなと思ったのですが、上記コードの実行結果は下記の通りで、意図とはだいぶ違いました。
php
1Array 2( 3 [0] => Array 4 ( 5 [flag] => 122 6 ) 7 8 [1] => Array 9 ( 10 [flag] => 122 11 ) 12 13 [2] => Array 14 ( 15 ) 16 17 [3] => Array 18 ( 19 [flag] => 2 20 ) 21 22 [4] => Array 23 ( 24 [flag] => 88 25 ) 26 27 [5] => Array 28 ( 29 [flag] => 88 30 ) 31 32 [6] => Array 33 ( 34 [flag] => 64 35 ) 36 37 [7] => Array 38 ( 39 ) 40 41)
冒頭に挙げたようなflagとstatusの組み合わせを持つ要素だけを抽出するにはどうしたらいいでしょうか?

回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/01/08 17:10
2017/01/09 02:47