Php 如何获取多维数组中的所有最小值?
我有以下代码:Php 如何获取多维数组中的所有最小值?,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我有以下代码: <?php $result = array ( array ("split" => "2", "combo" => "4,3"), array ("split" => "2", "combo" => "6,1"), array ("split" => "3", "combo" => "2,1"), array ("split" =
<?php
$result = array ( array ("split" => "2", "combo" => "4,3"),
array ("split" => "2", "combo" => "6,1"),
array ("split" => "3", "combo" => "2,1"),
array ("split" => "4", "combo" => "1,1,1,1"));
$min_x = min ( array_column( $result, 'split' ) );
print_r($min_x);
?>
现在,两个键都有一个最小值数组。这只是一个抽象的概念。您还可以使其动态化。您可以尝试此功能
<?php
$result = array ( array ("split" => "7", "combo" => "4,3"),
array ("split" => "2", "combo" => "6,1"),
array ("split" => "9", "combo" => "2,1"),
array ("split" => "8", "combo" => "1,1,1,1"));
array_multisort($result);
print_r($result[0]['combo']);
?>
您可以按如下方式执行此操作:
<?php
$result = array ( array ("split" => "2", "combo" => "4,3"),
array ("split" => "2", "combo" => "6,1"),
array ("split" => "3", "combo" => "2,1"),
array ("split" => "4", "combo" => "1,1,1,1"));
$min_x = min ( array_column( $result, 'split' ) );
$new_result = array();
foreach($result as $val){
if($val["split"] == $min_x)
$new_result[] = $val;
}
echo "<pre>";
print_r($new_result);
?>
您可以使用
min
和array\u列
获得最小数量,最后只需使用array\u过滤器
Array
(
[0] => Array
(
[split] => 2
[combo] => 4,3
)
[1] => Array
(
[split] => 2
[combo] => 6,1
)
)
输出:
注意:使用PHP版本>=5.5.0
您的代码没有重复的值
split
。这就是为什么你的代码只给出一个最小值split
,当我有重复的最小值split
时,我需要的是两个最小值split
。我得到了这个错误:警告:in_array()期望参数2是数组,字符串在
<?php
$result = array ( array ("split" => "2", "combo" => "4,3"),
array ("split" => "2", "combo" => "6,1"),
array ("split" => "3", "combo" => "2,1"),
array ("split" => "4", "combo" => "1,1,1,1"));
$min_x = min ( array_column( $result, 'split' ) );
$new_result = array();
foreach($result as $val){
if($val["split"] == $min_x)
$new_result[] = $val;
}
echo "<pre>";
print_r($new_result);
?>
Array
(
[0] => Array
(
[split] => 2
[combo] => 4,3
)
[1] => Array
(
[split] => 2
[combo] => 6,1
)
)
$result = array ( array ("split" => "2", "combo" => "4,3"),
array ("split" => "2", "combo" => "6,1"),
array ("split" => "3", "combo" => "2,1"),
array ("split" => "4", "combo" => "1,1,1,1"));
$min = min(array_column($result,'split'));
$res = array_filter($result,function($v)use($min){
return $v['split'] == $min;
});
print_r($res);
Array
(
[0] => Array
(
[split] => 2
[combo] => 4,3
)
[1] => Array
(
[split] => 2
[combo] => 6,1
)
)