如何按值对数组进行分组

时间:2016-03-03 14:25:27

标签: php arrays

我有一个数组,我需要将所有具有相同ID [id_promo]或[name]的项目分组,如果可能的话,所有名称都按照alfabetic顺序排序

我的数组是:

   Array ( 
[0] => Array ( [nome] => 0012 – Inês Marinho Lopes [id_promo] => 1897 [foto] => 1898 [entrega] => 12/03/2016 [devoluçao] => 18/03/2016 [devolvido] => Não ) 
[1] => Array ( [nome] => 0015 – Daniela Palhares [id_promo] => 1912 [foto] => 1913 [entrega] => 30/03/2016 [devoluçao] => 29/03/2016 [devolvido] => Não ) 
[2] => Array ( [nome] => 0031 – Cláudia Fonseca [id_promo] => 2026 [foto] => 2027 [entrega] => [devoluçao] => [devolvido] => Não ) 
[3] => Array ( [nome] => 0015 – Daniela Palhares [id_promo] => 1912 [foto] => 1913 [entrega] => 30/03/2016 [devoluçao] => 29/03/2016 [devolvido] => Não ) 
) 

我需要将它们分组如下:

Array ( 
[0] => Array ( [nome] => 0031 – Cláudia Fonseca [id_promo] => 2026 [foto] => 2027 [entrega] => [devoluçao] => [devolvido] => Não  ) 
[1] => Array ( [nome] => 0015 – Daniela Palhares [id_promo] => 1912 [foto] => 1913 [entrega] => 30/03/2016 [devoluçao] => 29/03/2016 [devolvido] => Não ) 
[2] => Array ( [nome] => 0015 – Daniela Palhares [id_promo] => 1912 [foto] => 1913 [entrega] => 30/03/2016 [devoluçao] => 29/03/2016 [devolvido] => Não ) 
[3] => Array ( [nome] => 0012 – Inês Marinho Lopes [id_promo] => 1897 [foto] => 1898 [entrega] => 12/03/2016 [devoluçao] => 18/03/2016 [devolvido] => Não ) 
) 

我尝试了一些foreach组合,但我不能让它工作......

tks

2 个答案:

答案 0 :(得分:0)

您可以尝试这样的事情:

$newArray = Array();
foreach($oldArray as $key => $item)
{
   $newArray[$item['id_promo']][$key] = $item;
}

ksort($newArray, SORT_NUMERIC);

ksort()

的参考

答案 1 :(得分:0)

你可以使用方法uasort结合回调函数

$arr = Array(); //This is your base array
function compare($a, $b) {
    if ($a['nome'] == $b['nome']) {
        return 0;
    }
    return ($a['nome'] < $b['nome']) ? 1 : -1;
}

usort($arr, 'compare');

这将仅在[nome]键上对数组进行排序。我认为你应该尝试增强它以使用[id_promo]和/或[name]。

您可以在usort

上找到详细的文档