PHP数组排序数据

PHP数组排序数据,php,Php,如何才能从这段php代码中获得最便宜的价格 Array ( [SKU0001901] => Array ( [0] => 300000 [1] => 50000 ) [SKU0001902] => Array ( [0] => 400

如何才能从这段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等

已解决

有很多方法可以回答我的问题。在我的例子中,我使用数组映射

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

在未来,我想研究哪种方法可以使其更快,特别是在大阵列数据中。

这将在您的案例中起作用

$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>';
}
$array\u full=数组(数组('SKU0001901'=>数组(30000050000)、'SKU0001902'=>数组(400200000500)、'SKU0001903'=>数组(1000005000));
foreach($key=>$aaa时的($array\u full[0])){
echo$key.“:”.min($aaa)。“
”; }

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

非常简单,您可以使用
foreach
排序

了解有关不同数组排序方法的更多信息

foreach
循环中使用
sort($v)
,该循环将从最低到最高排序,并且不保留键索引,因此此数组中的第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);

只需将
min
映射到您的阵列:

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

带有
数组映射
排序


到目前为止你都试过什么?使用
uasort()
。最后我找到了3种执行方法,但当我遇到否定问题时,这是个坏消息。没问题,谢谢所有已经给出最好答案的人。为你们三个竖起大拇指。谢谢提醒我。完成。现在看起来不错@Micks运行良好,但我尝试了下面的另一个答案,例如:$o=array\u map('min',$array);很简单,你能解释一下吗?强项和弱项?@Bobby,用户试图从数组中找到最小值,如果数组中碰巧有字符串,这将毫无帮助。啊,ic,那么不同的是数据类型,不是吗?我将尝试从一个数组(大数组)中使用相同的假设(minint值)来检查代码性能。感谢you@SahilGulati不,只要字符串是数字,它就可以工作fine@billyonecan很抱歉。。我确信这不会奏效。。我已经测试过了,运行良好,但我尝试了上面的另一个答案,比如:$o=array\u map('min',$array);非常简单,你能帮我解释一下你的代码吗?强项和弱项?
array\u map
比我的答案要好得多如果你的工作是在没有foreach的情况下完成的,那就太棒了!注意:如果出现
数组
$o = array_map('min', $array);
<?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
)