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