Php 对数组或数组排序?

Php 对数组或数组排序?,php,arrays,sorting,Php,Arrays,Sorting,我想对下面的数组进行排序。我想加上总数,如果名称是倍数。我还想把号码重新排列一下。它可以是索引+1 array ( 0 => array ('name' => 'Dave', 'number' => '1', 'total' => 1), 1 => array ('name' => 'Tom', 'number' => '2', 'total' => 1), 2 => array ('name' => 'Dave', 'nu

我想对下面的数组进行排序。我想加上总数,如果名称是倍数。我还想把号码重新排列一下。它可以是索引+1

array (
  0 => array ('name' => 'Dave', 'number' => '1', 'total' => 1),
  1 => array ('name' => 'Tom', 'number' => '2', 'total' => 1),
  2 => array ('name' => 'Dave', 'number' => '3', 'total' => 2),
  3 => array ('name' => 'Amy', 'number' => '4', 'total' => 1),
);


有什么想法吗?

使用自定义
$group
数组和
数组\u值的解决方案
函数:

$arr = array (
 array ('name' => 'Dave', 'number' => '1', 'total' => 1),
 array ('name' => 'Tom', 'number' => '2', 'total' => 1),
 array ('name' => 'Dave', 'number' => '3', 'total' => 2),
 array ('name' => 'Amy', 'number' => '4', 'total' => 1),
);

$group = [];
foreach ($arr as $item) {
    if (isset($group[$item['name']])){
        $group[$item['name']]['total'] += $item['total'];
    } else {
        $group[$item['name']] = $item;
    }
}
$result = array_values($group);

print_r($result);
输出:

Array
(
    [0] => Array
        (
            [name] => Dave
            [number] => 1
            [total] => 3
        )

    [1] => Array
        (
            [name] => Tom
            [number] => 2
            [total] => 1
        )

    [2] => Array
        (
            [name] => Amy
            [number] => 4
            [total] => 1
        )
)

更新:如果
编号
键应反映每个项目的顺序位置,则使用以下方法与自定义
$count
变量配合使用:

...
$group = [];
$count = 1;
foreach ($arr as $item) {
    if (isset($group[$item['name']])){
        $group[$item['name']]['total'] += $item['total'];
    } else {
        $item['number'] = $count++;
        $group[$item['name']] = $item;
    }
}
... 

这是分组,不是排序。它看起来像PHP,如果是,请将问题标记为PHP。2.这个太宽了,你试过什么?向我们展示您遇到问题的代码。记住,我们是来帮助你的,不是你为你工作!我希望最后一个
[number]
=>4是
[number]=>3
@iamkdev,根据什么逻辑?它应该是数组的位置。上例中最后一个元素索引是2,其位置是3。所以,应该是3。它类似于序列号。根据这一逻辑,为什么带有
'name'=>'Tom'
的项目在您的预期结果中有
'number'=>'2'
,而其初始位置是
1
?@iamkdev,请检查我的更新
...
$group = [];
$count = 1;
foreach ($arr as $item) {
    if (isset($group[$item['name']])){
        $group[$item['name']]['total'] += $item['total'];
    } else {
        $item['number'] = $count++;
        $group[$item['name']] = $item;
    }
}
...