简体   繁体   中英

get max and min value each column in multdimensional array php

I have a multidimensional array

$array1 = array(
    0 => array(34554, 45, 4545454),
    1 => array(434534, 35, 345345),
    2 => array(43534, 35, 4343445),
    3 => array(35534, 34, 342323)
);

Can we find the minimum and maximum value for each value? if we want to find min for first and second column, the other column is max, and the result array is

$array2 = array(
    0=>34554,
    1=>34,
    2=>4545454
);

i've tried this to get min

$result = array(); // save result
array_walk_recursive($ary, function($v, $k) use (&$result) { 
    if (!isset($result[$k])) $result[$k] = $v;
    elseif ($result[$k] > $v) $result[$k] = $v;
});

print_r ($result);

and tried this to get max

$result = array(); // save result
array_walk_recursive($ary, function($v, $k) use (&$result) { 
    if (!isset($result[$k])) $result[$k] = $v;
    elseif ($result[$k] < $v) $result[$k] = $v;
});
print_r ($result);

Thank you.

try below solution:

$array1 = array(
    0 => array(34554, 45, 4545454),
    1 => array(434534, 35, 345345),
    2 => array(43534, 35, 4343445),
    3 => array(35534, 34, 342323)

);

//max values
$max_arr = array_map(function ($val) {
    return max($val);
}, $array1);
print_r($max_arr);

//min values
$min_arr = array_map(function ($val) {
    return min($val);
}, $array1);
print_r($min_arr);

//min and max values
$min_max_arr = array_map(function ($val) {
    return array('min' => min($val), 'max' => max($val));
}, $array1);

print_r($min_max_arr);

output:

//max values
Array
(
    [0] => 4545454
    [1] => 434534
    [2] => 4343445
    [3] => 342323
)

//min values
Array
(
    [0] => 45
    [1] => 35
    [2] => 35
    [3] => 34
)

//min and max values
Array
(
    [0] => Array
        (
            [min] => 45
            [max] => 4545454
        )

    [1] => Array
        (
            [min] => 35
            [max] => 434534
        )

    [2] => Array
        (
            [min] => 35
            [max] => 4343445
        )

    [3] => Array
        (
            [min] => 34
            [max] => 342323
        )

)

I have added some more element so that you can notice how it works, I have arranged max min as key and value pair, if you will edit your question and show me what you want as output, I will update it.

<?php
$array1 = array(
    0 => array(34554, 45, 4545454),
    1 => array(434534, 35, 345345),
    2 => array(43534, 35, 4343445),
    3 => array(9355434, 34, 342323),
    4 => array(35534, 34, 342323),
    5 => array(8544534, 34, 342323),
    6 => array(35534, 34, 342323)
);

foreach($array1 as $arr1){
    $max = max($arr1);
    $arr[$max] = min($arr1);
}
var_dump($arr);

output

array (size=6)
  4545454 => int 45
  434534 => int 35
  4343445 => int 35
  9355434 => int 34
  342323 => int 34
  8544534 => int 34

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM