2015-01-16 35 views
2

我有此数组:获得不同值阵列的更优雅的方式

$array[] = [ 
     'a' => $a, 
     'b' => $b, 
]; 

数组包含的假设10个条目,美元可以在那里与相同值很多次,我只需要一个这些条目的数据库插入。

我不能设法得到array_unique工作,因为它试图使用它像

$result = array_unique($array); 

我现在有点foreach循环,感觉只是做错的时候抛出

array to string conversion 

错误所以:

$z = []; 
    foreach ($array as $x) { 

     if (@!in_array($x['a'],$z)) { 
      $z[] = $x['a']; 
     } 
    } 

然后我用$ z作插入。

有人能指出我正确的方向如何区分我的数组值吗?

+0

你确定你不是指'$ array',而不是'$ array []'? –

回答

3

这应该适合你:

$result = array_unique($array);这并没有奏效,因为你有一个多维数组)

<?php 


    //Example data 
    $array[] = [ 
      'a' => 1, 
      'b' => 1, 
      'c' => 1, 
      'd' => 2, 
      'e' => 2, 

    ]; 

    $array = array_map("array_unique", $array); 
    print_r($array); 

?> 

输出:未提及

Array ([0] => Array ([a] => 1 [d] => 2)) 
+0

非常感谢! – baao

1

根据您的阵列是二维的,你将需要:

$array = array_map('array_unique', $array); 

或者,如果你并不需要一个二维数组,只需使用:

$array = [ 
     'a' => $a, 
     'b' => $b, 
]; 

然后:$array = array_unique($array);

+0

非常感谢! – baao

0

一件事是,数组是建立在独特的,如果你可以管理的关键他们自己。关联数组只能有一次密钥。所以我想要做的是使用主键或唯一标识符作为键。

你不能拥有像这样的相同键的数组。

array(
    'a' => $a 
    'a' => $b 
) 

因为密钥a已经是一个唯一的标识符。如果你遵循。