Php 按1列排列多维数组

Php 按1列排列多维数组,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我有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 ($dataPoi

我有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”


我做错了什么?

正在对inidivdual数组($x、$y、$z)执行排序操作。如果您查看这些数组,您将看到它们已被排序

$aaa=true
因为这意味着
数组\u多排序
成功。

根据,数组\u多排序返回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);

我相信这就是您想要的,在
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]);

检查这个oops,对不起,自制的print\r方法(写得更快:-D)可能很愚蠢,但是如何只输出其中一个值,或者单独输出,而不是在数组中?我刚刚得到这个:数组([0]=>Array([1]=>6[2]=>1000[3]=>7.38)[1]=>Array([1]=>10[2]=>300[3]=>3.61)[2]=>Array([1]=>14[2]=>630[3]=>2.58])Ta。标记为也回答了。