/ /配列の多次元配列 - PHP、配列

順序配列多次元 - PHP、配列

私はこのような配列を持っています:

$cars = array (
array(
"a" => "audi",
"b" => "a4"),
array(
"a" => "peugeot",
"b" => "306"),
array(
"a" => "audi",
"b" => "a4"),
array(
"a" => "audi",
"b" => "a5"),
array(
"a" => "peugeot",
"b" => "106"),
array(
"a" => "peugeot",
"b" => "106"),
);

私は次のような配列を配列する必要があります(idはnameと同じです):

name => audi
id=> audi
data => a4 => 2
a5 => 1
name => peugeot
id=> peugeot
data => 306 => 1
106 => 2

だから、車の種類を数えれば、車のブランドをグループ化する必要があります。

私はすでにこのコードを持っています。それはグループ部分のみであり、カウント部分は欠落しています。

function mergeAndOrder($data){

// set group arrays
$i = 0; $group1 = array();

// loop trough array
$array = array(); $array2 = array();
if($data != null){
foreach($data AS $row){

// search and order level1
$search = array_search($row->a,$group1);

// this object is not found
if(is_int($search) == false){

$group1[$i] = $row->a;
$array[$i]["id"] = $row->a;
$array[$i]["name"] = $row->a;
$array[$i]["data"] = array();

$i++;

}

}
}

return $array;
}

誰かがこのケースの解決策を知っていますか?ありがとう!

--- INPUT(の一部)--- この場合、a =リース会社

Array
(
[0] => stdClass Object
(
[b] => AUDI
[a] => LPN
)

[1] => stdClass Object
(
[b] => AUDI
[a] => LPN
)

[2] => stdClass Object
(
[b] => AUDI
[a] => LPN
)

[3] => stdClass Object
(
[b] => AUDI
[a] => LPN
)

---出力(一部)---

Array
(
[0] => Array
(
[id] => LPN
[name] => LPN
[data] => Array
(
)

)

[1] => Array
(
[id] => ARV
[name] => ARV
[data] => Array
(
)

)

[2] => Array
(
[id] => ARVB
[name] => ARVB
[data] => Array
(
)

)

[3] => Array
(
[id] => LPD
[name] => LPD
[data] => Array
(
)

)

)

Array
(
[0] => Array
(
[id] => LPN
[name] => LPN
[data] => Array
(
)

)

[1] => Array
(
[id] => ARV
[name] => ARV
[data] => Array
(
)

)

[2] => Array
(
[id] => ARVB
[name] => ARVB
[data] => Array
(
)

)

回答:

回答№1は1

私があなたの質問を正しく理解すれば、これはあなたが望むことをするはずです。

function mergeAndOrder ($data) {

$output = array();
foreach ($data as $item) {

$id    = $item->a;
$value = $item->b;

if (!array_key_exists($id, $output)) {
$output[$id] = array("id" => $id, "name" => $id, "data" => array());
}

if (!array_key_exists($value, $output[$id]["data"])) {
$output[$id]["data"][$value] = 0;
}

$output[$id]["data"][$value]++;
}

// Order by name element
uasort($output, function ($a, $b) {
return strcasecmp($a["name"], $b["name"]);
});

return $output;
}

出力:

Array
(
[audi] => Array
(
[id] => audi
[name] => audi
[data] => Array
(
[a4] => 2
[a5] => 1
)

)

[peugeot] => Array
(
[id] => peugeot
[name] => peugeot
[data] => Array
(
[306] => 1
[106] => 2
)

)
)