2014-11-04 94 views
1

我有2個多維數組。如何獲得陣列差異

數組1含有一些可用名稱:

Array1 
(
[0] => Array 
    (
     [quantity] => 13 
     [idname] => 3 
     [x_name] => Name-3 
    ) 

[1] => Array 
    (
     [quantity] => 5 
     [idname] => 4 
     [x_name] => Name-4 
    ) 

) 

和ARRAY2包含所有可用的名稱:

Array2 
(
    [0] => Array 
     (
      [id_x] => 3 
      [x_name] => Name-3 
      [id_l] => 4 
     ) 

    [1] => Array 
     (
      [id_x] => 4 
      [x_name] => Name-4 
      [id_l] => 8 
     ) 

    [2] => Array 
     (
      [id_x] => 5 
      [x_name] => Name-5 
      [id_l] => 7 
     ) 

    [3] => Array 
     (
      [id_x] => 6 
      [x_name] => Name-6 
      [id_l] => 5 
     ) 

) 

數組1 [] [idname] = ARRAY2 [] [id_x] 和 數組1我想要的輸出將是來自Array2 Array1不包含的每個元素...所以:

Arraydesire 
(

    [0] => Array 
     (
      [id_x] => 5 
      [x_name] => Name-5 
      [id_l] => 7 
     ) 

    [1] => Array 
     (
      [id_x] => 6 
      [x_name] => Name-6 
      [id_l] => 5 
     ) 

) 

我tryed與array_intersect但沒有工作。 感謝您的幫助。

+0

http://php.net/manual/en/function.array -diff.php – DarkBee 2014-11-04 12:22:46

回答

2

您可以使用嵌套的foreach循環。如果在ARRAY1被發現從數組2的當前元素的值,刪除元素:

foreach($array2 as $key => $value){ 
    foreach($array1 as $val){ 
     if($value['x_name']==$val['x_name']){ 
      unset($array2[$key]); 
      $break; 
     } 
    } 
} 
var_dump($array2); 

直播例如:http://codepad.viper-7.com/eOOUi6

+0

謝謝。它真的有用! – TomLi 2014-11-04 13:55:44

0

看看和array_diff(http://php.net/manual/en/function.array-diff.php),

$array1 = array("a" => "green", "red", "blue", "red"); 
$array2 = array("b" => "green", "yellow", "red"); 
$result = array_diff($array1, $array2); 
print_r($result); 

Array 
(
    [1] => blue 
) 

做不到這一點,你可能需要編寫,通過數組2跑,看到一個循環,如果它在陣列1,如果它不把它添加到一個新的數組輸出該數組

0
<?php 
$arr1 = Array(); 
$arr1[] = Array('quantity' => 13, 'idname' => 3, 'x_name' => 'Name-3'); 
$arr1[] = Array('quantity' => 5, 'idname' => 4, 'x_name' => 'Name-4'); 


$arr2 = Array(); 
$newTemp = Array(); 
$arr2[] = Array('id_x' => 3, 'x_name' => 'Name-3', 'id_l' => 4); 
$arr2[] = Array('id_x' => 4, 'x_name' => 'Name-4', 'id_l' => 8); 
$arr2[] = Array('id_x' => 5, 'x_name' => 'Name-5', 'id_l' => 7); 
$arr2[] = Array('id_x' => 6, 'x_name' => 'Name-6', 'id_l' => 5); 

$newTemp = $arr2; 
foreach ($arr1 as $subArray1) { 
    foreach ($arr2 as $key => $subArray2) { 
     if ($subArray1['x_name']==$subArray2['x_name']) { 
      unset($newTemp[$key]); 
      break; 
     } 
    } 
} 
print_r($arr1); 
print_r($arr2); 
print_r($newTemp); 
?>