亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

根據共同值制作數組

根據共同值制作數組

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 關注
  • 111 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號