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
        )

)