2016-11-28 29 views
1

我已經2個多維數組,如下所示:多維聯想獨特

$x = [ 
     0=>[ 
      'a', 
      'b' 
     ], 

     1=>[ 
      'c', 
      'd' 
     ], 

     2=>[ 
      'e', 
      'f' 
     ] 
    ]; 

    $y = [ 
     0=>[ 
      'b', 
      'a' 
     ], 

     1=>[ 
      'g', 
      'h' 
     ], 

     2=>[ 
      'i', 
      'j' 
     ] 
    ]; 

我想用這樣的

$xy = [ 
     0=>[ 
      'c', 
      'd' 
     ], 
     1=>[ 
      'e', 
      'f' 
     ], 
     2=>[ 
      'g', 
      'h' 
     ], 
     3=>[ 
      'i', 
      'j' 
     ] 
    ]; 

,你可以輸出合併2個數組(x和y)參見$x[0]等於a,b$y[0]等於b,a並且它們是重複的。我想知道是否可能a,b和b一樣,a,我不知道如何讓我的代碼看起來像這樣。我想消除我的重複數組(a,b!= b,a)。任何重複都是不允許的,這是可能的嗎?

回答

0

這應該給你你所要求的。我使用了多個foreach()循環來測試該值是否爲$Y數組的第一部分,如果是,則使用unset()從兩個數組中刪除。然後,我將兩個數組合並在一起,刪除了空的數組維度並重置鍵數。

$x = [0=>['a','b'],1=>['c','d'],2=>['e','f']]; 
$y = [ 0=>['b','a'],1=>['g','h'],2=>['i','j']]; 

foreach ($x as $key=>$value) { 

    foreach($x[$key] as $k=>$v) { 

     $search = array_search($v, $y[$key], true); //Find if value is equal to value in Y using a search 

    if ($search !== false) { //If so then remove value 

     unset($y[$key][$search]); //Remove from Array Y 
     unset($x[$key][$search]); //Remove from Array X 

     } 

    } 
} 


$newArray = array_merge($x, $y); //Merge two arrays together 

foreach($newArray as $key => $value) { //Remove empty dimensions from Array 

    if (count($newArray[$key]) <= 0) { 

     unset($newArray[$key]); 

    } 

} 


$newArray = array_values($newArray); //Re-Number Keys so there in order 


var_dump($newArray); //Array Output 

輸出

{ 
    [0] => array(2) { 
     [0] => string(1) 
     "c" [1] => string(1) 
     "d" 
    }[1] => array(2) { 
     [0] => string(1) 
     "e" [1] => string(1) 
     "f" 
    }[2] => array(2) { 
     [0] => string(1) 
     "g" [1] => string(1) 
     "h" 
    }[3] => array(2) { 
     [0] => string(1) 
     "i" [1] => string(1) 
     "j" 
    } 
} 

編輯

新增unset()從兩個陣列中刪除值,因爲它是提到,你會喜歡有從重複數據在n中顯示的數組新陣列。

+0

其幫助我這麼多,謝謝btw:D –