私はPHPで配列を持つ配列の配列を持っており、各要素内のフィールドに基づいて配列のトップレベルをソートしたいと思います。その要素の配列の要素に基づいて各要素内に配置されます。 (例を参照)。最後に、$data
には、最初に'primary'
の値が「first」、次に「second」の項目があります。私はまた、 'first'と 'second'の中で、フィールド'secondary'
の配列は、最初に 'foo'と 'bar'( 'first'と 'second'の両方)の'val'
の項目を持っています。配列を使って配列の配列をソートするPHP
$data = array (
array (
'myid' => 4,
'primary' => 'second',
'secondary' => array (
array (
'myid' => 10,
'val' => 'bar',
),
array (
'myid' => 8,
'val' => 'foo',
),
),
),
array (
'myid' => 2,
'primary' => 'first',
'secondary' => array (
array (
'myid' => 10,
'val' => 'bar',
),
array (
'myid' => 8,
'val' => 'foo',
),
),
),
);
function mysort($a, $b) {
return $a['myid'] > $b['myid'];
}
echo "pre sort:\n";
print_r($data);
usort($data, 'mysort');
echo "post top level sort:\n";
print_r($data);
foreach ($data as $k=>$item) {
usort($item['secondary'], 'mysort');
echo "Second Level Item sort:\n";
print_r($item['secondary']);
}
echo "post second level sort:\n";
print_r($data);
次の最終出力が得られるのはなぜですか?
post second level sort:
Array
(
[0] => Array
(
[myid] => 2
[primary] => first
[secondary] => Array
(
[0] => Array
(
[myid] => 10
[val] => bar
)
[1] => Array
(
[myid] => 8
[val] => foo
)
)
)
[1] => Array
(
[myid] => 4
[primary] => second
[secondary] => Array
(
[0] => Array
(
[myid] => 10
[val] => bar
)
[1] => Array
(
[myid] => 8
[val] => foo
)
)
)
)
ところで、私はPHP 5.2.17を使用しています。これがそうであるのはなぜ
ありがとうございます!私はそれが何が起こっているのかと考えましたが、 '&'を使うことは知らなかった。 – Max