对一个分块数组进行排序并理解它

时间:2016-02-13 01:38:19

标签: php mysql arrays

我正在使用此代码:

$chunked = array_chunk($items,3,false);

输出如下内容:

array(11) {
  [0]=>
  array(3) {
    [0]=>
    string(10) "Volvo"
    [1]=>
    string(4) "1000"
    [2]=>
    string(7) "50000"
  }
  [1]=>
  array(3) {
    [0]=>
    string(11) "Saab"
    [1]=>
    string(4) "1200"
    [2]=>
    string(7) "40000"
  }
  [2]=>
  array(3) {
    [0]=>
    string(7) "Lexus"
    [1]=>
    string(4) "900"
    [2]=>
    string(7) "55000"
  }
}

我想要做的是根据这些标准对这个分块数组进行正确排序。

  1. 提取成本最高的2辆车(第三个数据点)
  2. 在这2辆汽车中检查哪一辆行驶最远(第2个数据点)
  3. 因此输出将是:

    1. 沃尔沃 - 50000 - 1000
    2. 雷克萨斯55000 - 900
    3. 希望有人能指出我正确的方向。我很擅长以这种方式使用数组。

1 个答案:

答案 0 :(得分:1)

您基本上在寻找usort功能。根据{{​​3}}:

  

usort - 使用用户定义的比较函数按值对数组进行排序

首先,我用第三个键对整个数组进行排序(假设$z是你的数组)。然后取消设置最后一个元素并使用第二个键来取代数组:

usort($z, function($a, $b) {
    return $b[2] - $a[2];
});

unset($z[2]);

usort($z, function($a, $b) {
    return $b[1] - $a[1];
});

最后的值应如下:

Array
(
    [0] => Array
        (
            [0] => Volvo
            [1] => 1000
            [2] => 50000
        )

    [1] => Array
        (
            [0] => Lexus
            [1] => 900
            [2] => 55000
        )

)