2013-02-22 22 views
0

我想知道什麼是消除數組內重複的最佳方法?目前我正在運行一個foreach循環來實際獲得這個數組,有沒有辦法說,如果id已經存在,不要插入到數組中?消除多維數組中的重複值

foreach($categories2Sugg as $Category2Sugg) 
{ 

    $category_stringArray2Sugg[] = array("id"=>$Category2Sugg->id,"name"=>$Category2Sugg->name,"pluralName"=>$Category2Sugg->pluralName,"shortName"=>$Category2Sugg->shortName);  

} 


Array 
(
    [0] => Array 
     (
      [id] => 4bf58dd8d48988d16c941735 
      [name] => Burger Joint 
      [pluralName] => Burger Joints 
      [shortName] => Burgers 
     ) 

    [1] => Array 
     (
      [id] => 4bf58dd8d48988d16c941735 
      [name] => Burger Joint 
      [pluralName] => Burger Joints 
      [shortName] => Burgers 
     ) 

    [2] => Array 
     (
      [id] => 4bf58dd8d48988d16c941735 
      [name] => Burger Joint 
      [pluralName] => Burger Joints 
      [shortName] => Burgers 
     ) 

    [3] => Array 
     (
      [id] => 4bf58dd8d48988d14e941735 
      [name] => American Restaurant 
      [pluralName] => American Restaurants 
      [shortName] => American 
     ) 
) 

或者,也許它的容易做的另一項功能,如果這個數組已經存在,只是刪除一些值來輸出新的數組?

謝謝!

回答

1

嘗試array_unique php函數將有所幫助。

也儘量

$unique = array_map('unserialize', array_unique(array_map('serialize', $array))); 

echo "<pre>"; 
print_r($unique); 
echo "</pre>"; 

上面的代碼進行測試。

完成測試的代碼

<?php 
$array = array 
(
    '0' => array 
    (
     'id' => '4bf58dd8d48988d16c941735', 
     'name' => 'Burger Joint', 
     'pluralName' => 'Burger Joints', 
     'shortName' => 'Burgers' 
    ), 
    '1' => array 
    (
     'id' => '4bf58dd8d48988d16c941735', 
     'name' => 'Burger Joint', 
     'pluralName' => 'Burger Joints', 
     'shortName' => 'Burgers' 
    ), 
    '2' => array 
    (
     'id' => '4bf58dd8d48988d16c941735', 
     'name' => 'Burger Joint', 
     'pluralName' => 'Burger Joints', 
     'shortName' => 'Burgers' 
    ), 
    '3' => array 
    (
     'id' => '4bf58dd8d48988d14e941735', 
     'name' => 'American Restaurant', 
     'pluralName' => 'American Restaurants', 
     'shortName' => 'American' 
    ) 
); 

$unique = array_map('unserialize', array_unique(array_map('serialize', $array))); 

echo "<pre>"; 
print_r($unique); 
?>

乾杯。

+0

我已經更新了我的答案請看看,我也測試過了。 – 2013-02-22 04:04:44

+0

謝謝!有用! – hellomello 2013-02-22 04:05:34

+1

隨時歡迎兄弟... – 2013-02-22 04:07:03