Php 将相同的值数组合并到一个(字符串值)中,并将其对应的整数值和到相同的索引中?

Php 将相同的值数组合并到一个(字符串值)中,并将其对应的整数值和到相同的索引中?,php,Php,我有这个数组 Array ( [0] => Array ( [category_name] => Dessert1 [totalOrders] => 3 ) [1] => Array ( [category_name] => Dessert1 [totalOrders] => 1 )

我有这个数组

Array
(
    [0] => Array
        (
            [category_name] => Dessert1
            [totalOrders] => 3
        )

    [1] => Array
        (
            [category_name] => Dessert1
            [totalOrders] => 1
        )

    [2] => Array
        (
            [category_name] => Category 3
            [totalOrders] => 1
        )

)
Array
(
    [0] => Array
        (
            [category_name] => Dessert1
            [totalOrders] => 4
        )

    [1] => Array
        (
            [category_name] => Category 3
            [totalOrders] => 1
        )

)
我想把它转换成这个数组

Array
(
    [0] => Array
        (
            [category_name] => Dessert1
            [totalOrders] => 3
        )

    [1] => Array
        (
            [category_name] => Dessert1
            [totalOrders] => 1
        )

    [2] => Array
        (
            [category_name] => Category 3
            [totalOrders] => 1
        )

)
Array
(
    [0] => Array
        (
            [category_name] => Dessert1
            [totalOrders] => 4
        )

    [1] => Array
        (
            [category_name] => Category 3
            [totalOrders] => 1
        )

)

其实很简单。您只需在数据上循环,并选择独特的类别。当存在重复项时,将订单添加到类别的总数中

// The stuff from your post
$data = array(
    array('category_name' => 'Dessert1', 'totalOrders' => 3),
    array('category_name' => 'Dessert1', 'totalOrders' => 1),
    array('category_name' => 'Category 3', 'totalOrders' => 1),
);

// Auxiliary variable
$result = array();

// Go over the data one by one
foreach ($data as $item)
{
    // Use the category name to identify unique categories
    $name = $item['category_name'];

    // If the category appears in the auxiliary variable
    if (isset($result[$name]))
    {
        // Then add the orders total to it
        $result[$name]['totalOrders'] += $item['totalOrders'];
    }
    else // Otherwise
    {
        // Add the category to the auxiliary variable
        $result[$name] = $item;
    }
}
// Get the values from the auxiliary variable and override the
// old $data array. This is not strictly necessary, but if you
// want the indices to be numeric and in order then do this.
$data = array_values($result);

// Take a look at the result
var_dump($data);

到目前为止你试过什么吗?所以这不是一个编码服务。我已经考虑过了,但哪儿也找不到。我可以通过使用其他方法来完成我的任务,但如果我可以修改此数组,那么它将是一个更好的选择。提示:迭代数组并翻转键,以便使用category_name值作为键。非常感谢Sverri M.Olsen,这真的很有帮助。