1
私はuri
でソートしようとしている。この多次元配列多次元配列内でusortを使用するには?
[
"/api/dns" => [
0 => [
"method" => "GET",
"uri" => "foo0"
],
1 => [
"method" => "GET",
"uri" => "foo1"
],
2 => [
"method" => "GET",
"uri" => "foo2"
]
],
"/api/servers" => [
0 => [
"method" => "GET",
"uri" => "foo0"
],
1 => [
"method" => "GET",
"uri" => "foo1"
],
2 => [
"method" => "GET",
"uri" => "foo2"
]
]
];
を持っています。
Undefined index: uri
私はこれを追加しようとしました:
は、私はこのようなusort
を試してみました:
usort($myArray, function ($a, $b) {
return $a['uri'] - $b['uri'];
});
をしかし、ソートが右アレイ上で行われていないので、私はエラーを得たので、これが動作しませんforeach内で結果なしで機能します。並べ替えが正しい配列で行われているため、なぜこれが機能していないのか分かりません。
foreach ($myArray as $key) {
usort($key, function ($a, $b) {
return $a['uri'] - $b['uri'];
});
}
これはusort
で可能ですか?
でuri
でソートするにはどうすればよいですか?
各サブアレイをソートするか、配列全体をソートし、必要に応じてサブアレイを移動しますか? (foreach($ myArray as $ key) ')> – Rizier123
あなたの' uri'キーが英数字である場合、 '$ a [ 'uri'] - $ b ['uri'] 'は動作しません。代わりに['strcmp'](http://php.net/manual/en/function.strcmp.php)を使用してください。 – fusion3k
@ Rizier123 'foreach'で' usort'を使うためには、 'foreach($ myArray as&$ key)'を参照する必要があります。デフォルトでは '$ key'はコピーです。 'foreach'の後で破壊されるのでコピーをソートする必要はありません –