doupao6698 2019-03-11 09:45
浏览 54

按类别分组数组

I am facing problem In grouping array with the Key:- I have an php array Which has following elecment in it.

$array = array(
    '0' => array ( 'id' => 'food,Travel', 'names' => 'chimpanzee' ),
    '1' => array ( 'id' => 'food', 'name' => 'meeting' ),
    '2' => array ( 'id' => 'Z1', 'name' => 'dynasty' ),
    '3' => array ( 'id' => 'X', 'name' => 'chocolate' ),
    '4' => array ( 'id' => 'Travel', 'name' => 'bananas' ),
    '5' => array ( 'id' => 'Travel', 'name' => 'fantasy' ),
    '6' => array ( 'id' => 'Travel', 'name' => 'football' )
);

When I try with following code:-

$newarray= array();
foreach($array as $key => $value){
    $newarray[$value['id']][$key] = $value;
}

I am getting below result Array Here food,travel is created another array but I want to please those to respective category "Food goes to food" and travel goes to travel"

 (
    [food,Travel] => Array
        (
            [0] => Array
                (
                    [id] => food,Travel
                    [names] => chimpanzee
                )

        )

    [food] => Array
        (

[1] => Array

                    [id] => food,Travel
                    [names] => chimpanzee
                )  
(
                    [id] => food
                    [name] => meeting
                )


        )

    [Z1] => Array
        (
            [2] => Array
                (
                    [id] => Z1
                    [name] => dynasty
                )

        )

    [X] => Array
        (
            [3] => Array
                (
                    [id] => X
                    [name] => chocolate
                )

        )

    [Travel] => Array
        (
            [4] => Array
                (
                    [id] => Travel
                    [name] => bananas
                )

            [5] => Array
                (
                    [id] => Travel
                    [name] => fantasy
                )

            [6] => Array
                (
                    [id] => Travel
                    [name] => football
                )

        )

)

But I am want following result:- Food should Go to food category and travels should go to travels category like:-

Array
(
    [food] => Array

    (
            // Food should come at food category 
            [0] => Array
                (
                    [id] => food
                    [names] => chimpanzee
                )

        )

        (
            [1] => Array
                (
                    [id] => food
                    [name] => meeting
                )

        )

    [Z1] => Array
        (
            [2] => Array
                (
                    [id] => Z1
                    [name] => dynasty
                )

        )

    [X] => Array
        (
            [3] => Array
                (
                    [id] => X
                    [name] => chocolate
                )

        )

    [Travel] => Array
        (
            ( // Travel should come at travel category
            [0] => Array
                (
                    [id] => food
                    [names] => chimpanzee
                )

            )
            [4] => Array
                (
                    [id] => Travel
                    [name] => bananas
                )

            [5] => Array
                (
                    [id] => Travel
                    [name] => fantasy
                )

            [6] => Array
                (
                    [id] => Travel
                    [name] => football
                )

        )

)
  • 写回答

3条回答 默认 最新

  • dongse5528 2019-03-11 10:23
    关注

    review fragment

    $newArray= [];
    foreach($array as $mainKey => $value){
    
        $keys = explode(',', $value['id']);
    
        $tmpKeys = array_keys($value);
        $valueKey = array_pop($tmpKeys);
        $names = array_pop($value);
    
        if (count($keys) > 1) {
            $TravelExist = false;
            foreach ($keys as $key) {
                if ($key == 'Travel') {
                    $TravelExist = true;
                }
                $newArray[$key][$mainKey] = [
                    'id' => $key,
                    $valueKey=> $names,
                ];
            }
            if ($TravelExist) {
                foreach ($keys as $key) {
                    if ($key == 'Travel') {
                        continue;
                    }
                    $newArray['Travel'][$mainKey] = [
                        'id' => $key,
                        $valueKey=> $names,
                    ];
                }
            }
            continue;
        }
    
        $newArray[(!count($keys)) ? 'empty':$value['id']][$mainKey]  = [
            'id' => (!count($keys)) ? 'empty':$value['id'],
            $valueKey=> $names,
        ];
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥15 神经网络预测均方误差很小 但是图像上看着差别太大
  • ¥15 Oracle中如何从clob类型截取特定字符串后面的字符
  • ¥15 想通过pywinauto自动电机应用程序按钮,但是找不到应用程序按钮信息
  • ¥15 如何在炒股软件中,爬到我想看的日k线
  • ¥15 seatunnel 怎么配置Elasticsearch
  • ¥15 PSCAD安装问题 ERROR: Visual Studio 2013, 2015, 2017 or 2019 is not found in the system.
  • ¥15 (标签-MATLAB|关键词-多址)
  • ¥15 关于#MATLAB#的问题,如何解决?(相关搜索:信噪比,系统容量)
  • ¥500 52810做蓝牙接受端
  • ¥15 基于PLC的三轴机械手程序