转换关联数组 - >按价值分组

时间:2016-11-05 18:43:02

标签: php

我有一个关联数组,如下所示:

enter image description here

我想转换它。 它应按" product_service_category_name"进行分组。它看起来应该是这样的:

$productServices = [
'' => [
    1 => 'Diverses Service #1',
    2 => 'Diverses Service #2'
],
'Beratung' => [
    5 => 'Ernährungsberatung'
],
'Massagen' => [
    3 => 'Heilmassage',
    4 => 'Shiatsu'
]
];  

请注意这个事实,价值可能是空的。

有人可以帮我这个吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

您可以尝试以下方式:

$productServices = [];

foreach ($data as $value) {

    $key = $value['product_service_category_name'];

    if (!isset($productServices[$key])) {
        $productServices[$key] = [];
    }

    $productServices[$key][] = $value['product_service_name'];
}

您需要将$data与您问题中保存数组的变量进行交换。不起作用的是该数组也称为$productServices

希望这有帮助!

答案 1 :(得分:0)

function group($array)
{
    $group = array();
    $key = 'product_service_category_name';
    foreach (array_values($array) as $values) {

        if ( empty($values[$key])) {
            $ptr = 'empty';
        }
        else {
            $ptr = $values[$key];   
        }

        $new_key = $values['product_service_id'];
        $group[$ptr][$new_key] = $values['product_service_name'];   
    }
    return $group;
}

$grouped = group($ungrouped);

Test Here