我有一个多维数组:
array (
array (
array (
1,
3,
4
),
array (
1,
2,
3
)
)
)
我希望获得嵌套数组的最高值。
即。值4和3。
答案 0 :(得分:0)
您可以使用array_map()和max()函数从多维数组中获取最大值..
$arrayValues = array ( 0 => array ( ),1 => array ( 0 => 1, 1 => 3, 2 => 4), 2 => array ( 0 => 1, 1 => 2 ,2 => 3 ));
$maxValues = array_map(function($value){ return max($value);} ,$arrayValues);
echo "<pre>"; print_r($maxValues);
这会给你
Array
(
[0] =>
[1] => 4
[2] => 3
)
由于您的第一个索引在数据数组中为空,您可以使用array_filter()从数组中删除空元素
答案 1 :(得分:0)
您可以使用此代码:
// sample data
$input = [[], [1,3,4], [1,2,3]];
// get max values of non-empty arrays
$output = array_map('max', array_filter($input));
// output result
print_r($output);
输出是:
Array
(
[1] => 4
[2] => 3
)
array_filter
调用将返回原始数组,空子数组元素除外。然后array_map
与max
一起用作回调,以从剩余的子数组中获取最大值。
答案 2 :(得分:0)
您可以循环遍历多维数组,然后以数字方式对每个内部数组进行排序。然后,在循环内,筛选排序子数组的第一个元素(应该是最高数字)并将其推送到另一个创建的数组,以保持最大值。以下是:
<?php
$max = [];
$arr = [
[],
[8, 0, 11, 3, 4],
[1, 15, 2, 13, 7],
];
// LOOP THROUGH MULTI-DIMENSIONAL ARRAY
// AND SORT EACH SUB-ARRAY BY MAX-VALUE (DESC)
foreach($arr as $key=>&$data){
if(is_array($data) && !empty($data)){
rsort($data, SORT_NUMERIC);
$max[] = array_splice($data, 0, 1)[0];
}
}
var_dump($max);
// PRODUCES:
array (size=2)
0 => int 11
1 => int 15