2015-01-16 81 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已經是一個唯一的標識符。如果你遵循。