为了账号安全,请及时绑定邮箱和手机立即绑定

根据共同值制作数组

根据共同值制作数组

PHP
摇曳的蔷薇 2022-07-22 10:46:00
我有一个具有以下结构的数组。它有一些重复的值,我需要根据正确的制造商和型号对其进行排序。2 => array:3 [    "id_111" => "ALFA ROMEO"    "id_112" => "4C"    "id_8702" => "P"]3 => array:3 [    "id_111" => "ALFA ROMEO"    "id_112" => "GIULIA"    "id_8702" => "D"]4 => array:3 [    "id_111" => "ALFA ROMEO"    "id_112" => "GIULIA"    "id_8702" => "U"]5 => array:3 [    "id_111" => "ALFA ROMEO"    "id_112" => "GIULIETTA"    "id_8702" => "D"]6 => array:3 [    "id_111" => "ALFA ROMEO"    "id_112" => "GIULIETTA"    "id_8702" => "U"]7 => array:3 [    "id_111" => "ALFA ROMEO"    "id_112" => "STELVIO"    "id_8702" => "D"]从这个查询中,我必须使结构化数组如下所示:manufacturers: [0: {    name: "ALFA ROMEO",     models: [        0: {            name: "4C",            ids: [                0: { name: "p" }            ]        },        1: {            name: "GIULIA",            ids: [                0: {name: "D"},                1: {name: "U"}            ]        },        2: {            name: "GIULIETTA",            ids: [                0: {name: "U"},                1: {name: "D"}            ]        }    ]}1: {}]到目前为止,我已经尝试过以下代码。但出于某种原因,我有点迷路了。    $data = array();    foreach ($records as $record) {        $id1 = $record["id_111"];        $data["manufacturer"] = array();        if (!in_array("id1", $data["manufacturer"])) {            $data["manufacturer"] = array(                "name" => $id1            );        }        $id2 = $record["id_112"];        $data["manufacturer"][] = array("name" => $id2);    }任何人都可以帮助我。谢谢你。
查看完整描述

1 回答

?
牛魔王的故事

TA贡献1830条经验 获得超3个赞

定义一个 groupBy 函数:


function groupBy($items, $key)

{

    $array = array();

    foreach($items as $item) {

       foreach($item as $k => $v) {

           if($key == $k) $array[$v] []= $item;

       }

    }

    return $array;

}

接着


$names = groupBy($records, 'id_111');

$name_array = [];

foreach($names as $name => $name_items) {

    $models = groupBy($name_items, 'id_112');

    $model_array = [];

    foreach($models as $model => $model_items) {

       $ids = array_map(function($item) {

          return ['name' => $item['id_8702']];

       },$model_items);

       $model_array []= ['name' => $model, 'ids' => $ids];

    }

    $name_array []= ['name' => $name, 'models' => $model_array];

}


$results = ['manufacturers' => $name_array];


查看完整回答
反对 回复 2022-07-22
  • 1 回答
  • 0 关注
  • 123 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号