2

我使用的是多維數組存儲在腳本中的一些信息。有數以百計的額外的按鍵,但這是前三的樣子(私人信息審查):單個多維數組鍵突然消失嗎?

Array 
(
    [0] => Array 
     (
      [last_name] => LAST NAME 
      [first_name] => COLLEEN 
      [middle_name] => F 
      [dob] => 00/00/87 
      [sex] => F 
      [race] => W 
      [city] => SOME CITY 
     ) 

    [1] => Array 
     (
      [last_name] => LAST NAME 
      [first_name] => COLLEEN 
      [middle_name] => F 
      [dob] => 00/00/87 
      [sex] => F 
      [race] => W 
      [city] => SOME CITY 
     ) 

    [2] => Array 
     (
      [last_name] => LAST NAME 
      [first_name] => STEPHANIE 
      [middle_name] => L 
      [dob] => 00/00/74 
      [sex] => F 
      [race] => W 
      [city] => SOME CITY 
     ) 
) 

我想消除重複鍵值,如$array[1],這是$array[0]重複。要做到這一點,我這樣做:

function multi_array_unique($array) 
{ 
    $result = array_map("unserialize", array_unique(array_map("serialize", $array))); 

    foreach ($result as $key => $value) { 
    if (is_array($value)) { 
     $result[$key] = multi_array_unique($value); 
    } 
    } 

    return $result; 
} 

$unique_array = multi_array_unique($array); 
$unique_array = array_values($unique_array); 

現在,這確實刪除陣列......所有副本只是我一直沒能找出一個小東西的出色的工作。這是陣列現在看起來如何:

Array 
(
    [0] => Array 
     (
      [last_name] => LAST NAME 
      [first_name] => COLLEEN 
      [middle_name] => F 
      [dob] => 00/00/87 
      [race] => W 
      [city] => SOME CITY 
     ) 

    [1] => Array 
     (
      [last_name] => LAST NAME 
      [first_name] => STEPHANIE 
      [middle_name] => L 
      [dob] => 00/00/74 
      [sex] => F 
      [race] => W 
      [city] => SOME CITY 
     ) 

    [2] => Array 
     (
      [last_name] => LAST NAME 
      [first_name] => ASIA 
      [middle_name] => ALIA 
      [dob] => 00/00/88 
      [sex] => F 
      [race] => B 
      [city] => SOME CITY 
     ) 
) 

在哪裏做了$array[0]["sex"]去???這是唯一缺少的,我檢查了這個數據集中的93個鍵中的每一個。只有$array[0]缺少["sex"]密鑰。我完全被困在這裏。你們有什麼想法?

編輯:

雷能提供有效的解決方案,以實現我想要的結果,但我還是想知道是什麼原因導致原有的錯誤。

這裏是雷人的工作代碼(改編成函數):

function multi_array_unique($multi_array) 
{ 
    $newArray = array(); 
    foreach($multi_array as $subArray) { 
     if(!in_array($subArray, $newArray)) { 
      $newArray[] = $subArray; 
     } 
    } 

    return $newArray; 
} 
+0

你們是不是要避免主陣列中只有100%重複的子陣列?如果一個類似的數組有一個不同的值,你想保留它嗎? – Ray

+1

也許PHP並不想做愛XD –

+0

是數組[0]和陣列[1]也是唯一重複的93個鍵? –

回答

1

試試這個擺脫重複成員:

$newArray = new array(); 
foreach($originalArray as $subArray){ 
    if(!in_array($subArray, $newArray){ 
     $newArray[] = $subArray; 
     } 
    } 

數組$ newArray只能有唯一的成員原始數組。

+0

我喜歡這種方式。 – Carlos

+0

修正了一些錯字,但這種方法效果很好。謝謝。我仍然想知道原始方法會發生什麼。 – jdstankosky