2013-02-22 50 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