我有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 :(得分:0)
正在对inidivdual数组($ x,$ y,$ z)执行排序操作。如果你看一下这些数组,你会看到它们已被排序。
$aaa = true
因为这意味着array_multisort
成功了。
答案 1 :(得分:0)
根据The docs,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
另请注意,您按第一列排序,然后是第二列,然后是第三列(如果是关系)。如果您想先按第三列排序,则应使用此选项:
$aaa = array_multisort($z, SORT_ASC, $x, SORT_DESC, $y, SORT_ASC, $dataPoints);
答案 2 :(得分:0)
我相信这就是你想要的,在usort
之后,$datapoints
中的第一个条目将保存你想要找到的记录。当然,您可以修改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]) {
return 0;
}
return ($a[3] < $b[3]) ? -1 : 1;
});
print_r($dataPoints[0]);
以下是工作示例http://3v4l.org/XJU9t
的链接