Array ( [0] => Array ( [id] => 11 [parametername] => 參數名稱11 ) )
Array ( [0] => Array ( [id] => 6 [parametername] => 參數名稱6 ) [1] => Array ( [id] => 10 [parametername] => 參數名稱10 ) [2] => Array ( [id] => 11 [parametername] => 參數名稱11 ) [3] => Array ( [id] => 15 [parametername] => 參數編輯 ) [4] => Array ( [id] => 16 [parametername] => 參數20 ) )
回複內容:
Array ( [0] => Array ( [id] => 11 [parametername] => 參數名稱11 ) )
Array ( [0] => Array ( [id] => 6 [parametername] => 參數名稱6 ) [1] => Array ( [id] => 10 [parametername] => 參數名稱10 ) [2] => Array ( [id] => 11 [parametername] => 參數名稱11 ) [3] => Array ( [id] => 15 [parametername] => 參數編輯 ) [4] => Array ( [id] => 16 [parametername] => 參數20 ) )
$array1 = array( array('n3'=>'v3', 'n4'=>'v4'), array('n1'=>'v1', 'n2'=>'v2'));$array2 = array( array('n1'=>'v1', 'n2'=>'v2'));$result = array_udiff( $array1, $array2, function ($v1, $v2) { return strcmp(serialize($v1), serialize($v2)); })// 或者$result = array_filter($array1, function($v) use ($array2) { return in_array($v, $array2);});
你可以試試。
回調是你的好朋友。
資料:
11, "parametername" => "PARAMETER NAME XI" ) , array( "id" => 30, "parametername" => "PARAMETER NAME XXX" ) , );$array2 = array( array( "id" => 6, "parametername" => "Parameter Name VI" ), array( "id" => 10, "parametername" => "Parameter Name X" ) , array( "id" => 11, "parametername" => "Parameter Name XI" ) , array( "id" => 15, "parametername" => "Parameter Name XV" ) , array( "id" => 16, "parametername" => "Parameter Name XVI" ) , );
比較代碼如下:
array_udiff($array2, $array1, function($a, $b) { return ($a['id'] - $b['id']);});/*array( array( "id" => 6, "parametername" => "Parameter Name VI" ), array( "id" => 10, "parametername" => "Parameter Name X" ) , array( "id" => 15, "parametername" => "Parameter Name XV" ) , array( "id" => 16, "parametername" => "Parameter Name XVI" ) , )*/array_udiff($array1, $array2, function($a, $b) { return ($a['id'] - $b['id']);})/*array( array( "id" => 30, "parametername" => "PARAMETER NAME XXX" ), )*/
另外我希望沒理解錯題意。以上代碼均認為只要id相同就屬於同一個資料。如果有必要自行更改回調的邏輯。
回調很好。。學了一招。