0 レビュー
3 回答
php-1列で多次元配列を配置します
3つの情報を含む3つのアレイがあります。おそらくここに表示する方が簡単です:
$dataPoints = array(
array('1' => '33','2' => 'dave','3' => '367'),
array('1' => '168','2' => 'susan','3' => '56788'),
array('1' => '99','2' => 'tim','3' => '6')
foreach ($dataPoints as $key => $row) {
$x[$key] = $row['1'];
$y[$key] = $row['2'];
$z[$key] = $row['3'];
}
$aaa = array_multisort($x, SORT_DESC, $y, SORT_ASC, $z, $dataPoints);
print_r($aaa);
最小の「3」(3列目)の値を並べ替えてから、その配列の3つの回答すべてを出力しようとしています。
つまり、「6」は3列目で最も低くなります。次に、「99」、「tim」、「6」を出力します。
何が間違っているのですか?
わからない
0
レビュー
答え :
解決策:
ドキュメントによると、array_multisortはTRUEまたはFALSEを返します。したがって、アレイは直接変更されます。
正しいコードは次のとおりです:
$dataPoints = array(
array('1' => '33','2' => 'dave','3' => '367'),
array('1' => '168','2' => 'susan','3' => '56788'),
array('1' => '99','2' => 'tim','3' => '6')
);
foreach ($dataPoints as $key => $row) {
$x[$key] = $row['1'];
$y[$key] = $row['2'];
$z[$key] = $row['3'];
}
$aaa = array_multisort($x, SORT_DESC, $y, SORT_ASC, $z, SORT_ASC, $dataPoints);
print_r($aaa); //TRUE or FALSE
print_r($dataPoints); //The data sorted
また、最初の列、2番目、3番目(同点の場合)の順に並べ替えていることに注意してください。最初に3番目の列で並べ替える場合は、次を使用する必要があります:
$aaa = array_multisort($z, SORT_ASC, $x, SORT_DESC, $y, SORT_ASC, $dataPoints);
わからない
0
レビュー
答え :
解決策:
並べ替え操作は、個々の配列($ x、$ y、$ z)で実行されています。これらの配列を見ると、ソートされていることがわかります。
$aaa = true
は、 array_multisort
が成功したことを意味します。
わからない
0
レビュー
答え :
解決策:
usort
の後、 $datapoints <の最初のエントリは、これが必要なものだと思います。 / code>は、探しているレコードを保持します。もちろん、
usort
の関数を変更して、好きなように並べ替えることができます。
<?php
$ dataPoints = array(
array( '1' => '33'、 '2' =>'dave'、 '3' => '367')、
array( '1' => '168'、 '2' =>'susan'、 '3' => '56788')、
array( '1' => '99'、 '2' =>'tim'、 '3' => '6')
);
usort($ dataPoints、function($ a、$ b){
if($ a [3] == $ b [3]){
0を返します。
}
return($ a [3] <$ b [3])? -1:1;
});
print_r($ dataPoints [0]);
ここに実際の例へのリンクがありますhttp://3v4l.org/XJU9t
わからない
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。