この配列がありますが、「C0」キーの値で配列を並べ替える必要があります
$tmp_array_value = array (
'9e5dae29ec5a83d503f2e4d4b5f29f91' =>
array (
'007Hal007' =>
array (
'C0' => 2,
'C1' => 1,
'C2' => 1,
),
),
'9317264ea7cc25c6f4f92bbdeb01ec63' =>
array (
'011210' =>
array (
'C0' => 3,
'C1' => 1,
'C2' => 1,
'C3' => 1,
),
),
'c911f95676eb7e5979fda3770bff1a03' =>
array (
'022218' =>
array (
'C0' => 1,
'C1' => 1,
'C2' => 1,
'C3' => 1,
),
)
最初の2つのキーレベルが変更されますが、C0 {count / number}値で並べ替える必要があります
結果は次のようになると思います。
$tmp_array_value = array (
'c911f95676eb7e5979fda3770bff1a03' =>
array (
'022218' =>
array (
'C0' => 1,
'C1' => 1,
'C2' => 1,
'C3' => 1,
),
), '9e5dae29ec5a83d503f2e4d4b5f29f91' =>
array (
'007Hal007' =>
array (
'C0' => 2,
'C1' => 1,
'C2' => 1,
),
),
'9317264ea7cc25c6f4f92bbdeb01ec63' =>
array (
'011210' =>
array (
'C0' => 3,
'C1' => 1,
'C2' => 1,
'C3' => 1,
),
),
/ iは、usortまたは他の複数の関数を使用してこれを実現する方法がわかりません。
助けてください
配列内の要素ごとに異なる第2レベルのキーがあるためarray_values
、比較関数内で使用して、これらの配列のインデックスを再作成し、C0
各要素の値にアクセスできるようにする必要があります。またuasort
、関連付けキーを保持するためにを使用する必要があります。
uasort($tmp_array_value, function ($a, $b) {
return array_values($a)[0]['C0'] - array_values($b)[0]['C0'];
});
print_r($tmp_array_value);
第2レベルの配列には要素が1つしかないため、(@ Kevinが指摘しているように)使用することもできます。
return reset($a)['C0'] - reset($b)['C0'];
'CO'
最初の配列要素から値を取得します。
出力:
Array
(
[c911f95676eb7e5979fda3770bff1a03] => Array
(
[022218] => Array
(
[C0] => 1
[C1] => 1
[C2] => 1
[C3] => 1
)
)
[9e5dae29ec5a83d503f2e4d4b5f29f91] => Array
(
[007Hal007] => Array
(
[C0] => 2
[C1] => 1
[C2] => 1
)
)
[9317264ea7cc25c6f4f92bbdeb01ec63] => Array
(
[011210] => Array
(
[C0] => 3
[C1] => 1
[C2] => 1
[C3] => 1
)
)
)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加