PHP数组排序数据

时间:2017-05-04 10:50:31

标签: php

如何从这个PHP代码中获得最便宜的价格?

Array
    (
        [SKU0001901] => Array
            (
                [0] => 300000
                [1] => 50000
            )

        [SKU0001902] => Array
            (
                [0] => 400
                [1] => 2000000
                [2] => 500
            )

        [SKU0001903] => Array
            (
                [0] => 100000
                [1] => 500000
            )

    )

期待:SKU0001901是50000, SKU0001902最便宜的是400等。

解决

有很多方法可以回答我的问题。就我而言,我使用array_map。

$o = array_map('min', $array);

将来,我想研究一种方法,使其更快,特别是在大数据数据中。

4 个答案:

答案 0 :(得分:5)

只需将min映射到您的数组:

$o = array_map('min', $array);

Here's a demo

答案 1 :(得分:2)

最简单的array_mapsort

Try this code snippet here

<?php
$array= array( 
        'SKU0001901' =>  array(300000,50000),
        'SKU0001902' => array(400,2000000,500),
        'SKU0001903' =>  array(100000,500000));
$array=array_map(function($value){
    sort($value,SORT_NUMERIC);
    return $value[0];
}, $array);
print_r($array);

<强>输出:

Array
(
    [SKU0001901] => 50000
    [SKU0001902] => 400
    [SKU0001903] => 100000
)

答案 2 :(得分:1)

这适用于您的情况。

$array_full= array( array('SKU0001901' =>  array(300000,50000),'SKU0001902' => array(400,2000000,500),'SKU0001903' =>  array(100000,500000)));
foreach($array_full[0] as $key=>$aaa){
    echo $key.' : '.min($aaa).'<br>';
}

您可以使用min从数组中获取最低值

答案 3 :(得分:0)

非常简单,您可以使用foreachsort

详细了解不同的数组排序方法here

sort($v)循环中使用foreach,其中排序最低到最高并且不保留键索引,因此此数组中的第0项始终是最小值。

<?php
$input =  [
  'SKU0001901' => [
    300000,
    50000,
  ],
  'SKU0001902' => [
    400,
    2000000,
    500,
  ],
  'SKU0001903' => [
    100000,
    500000,
  ]
];

$output = [];
foreach ($input as $k => $v) {
  sort($v);
  $output[$k] = $v[0];
}
print_r($output);

产地:

Array
(
    [SKU0001901] => 50000
    [SKU0001902] => 400
    [SKU0001903] => 100000
)