在PHP数组中查找最大值
以下是我的阵列:在PHP数组中查找最大值,php,arrays,Php,Arrays,以下是我的阵列: Array ( [3] => Array ( [2] => 3 [4] => 1 [5] => 2 [6] => 2 ) [5] => Array ( [2] => 1 [3] => 2 [4] =&
Array
(
[3] => Array
(
[2] => 3
[4] => 1
[5] => 2
[6] => 2
)
[5] => Array
(
[2] => 1
[3] => 2
[4] => 3
[6] => 3
)
在这个数组中,我想找到最大值,如果数组包含相同的最大值,那么我们随机选择一个最大值
预期产出如下:
Array
(
[3] => Array
(
[2] => 3
)
[5] => Array
(
[4] => 3
)
[6] => Array
(
[2] => 3
)
)
这就是我尝试过的:
$found = Array( [3] => Array ( [2] => 3 [4] => 1 [5] => 2 [6] => 2 ) [5] => Array ( [2] => 1 [3] => 2 [4] => 3 [6] => 3 ) [6] => Array ( [2] => 3 [3] => 2 [4] => 2 [5] => 3 ))
$fmaxnum = array();
foreach($found as $fk => $fv){
$fmaxnum[$fk] = max($fv);
}
echo "<pre>";print_r($fmaxnum);echo "</pre>"
$found=Array([3]=>Array([2]=>3[4]=>1[5]=>2[6]=>2[5]=>Array([2]=>1[3]=>2[4]=>3[6]=>Array([2]=>3[3]=>2[4]=>2[5]=>3))
$fmaxnum=array();
foreach($fk=>$fv){
$fmaxnum[$fk]=最大值($fv);
}
回声“;打印(fmaxnum);回声“”
您将使用max()
获得最大值,但对于索引,您必须使用数组键()
您可以尝试以下方法:
// supposing $arr is your initial array
$arrMax = array_map(function($v){
$maximum = max($v);
return [array_keys($v, $maximum)[0] => $maximum];
}, $arr);
print_r($arrMax);
$found=Array('3'=>Array('2'=>3,'4'=>1,'5'=>2,'6'=>2),
'5'=>数组('2'=>1,'3'=>2,'4'=>3,'6'=>3),
'6'=>数组('2'=>3,'3'=>2,'4'=>2,'5'=>3)
);
$fmaxnum=array();
foreach($fk=>$fv){
$max_key=数组_key($fv,max($fv));
$fmaxnum[$fk]=数组(
($max_key[0])=>max($fv)/*这将给出较小的索引值*/
/*(count($max_key)-1)=>=>max($fv)//这将给出最高的索引值*/
);
}
回声“;
打印(fmaxnum);
回声“;
具有数组映射
和数组键
功能的简单解决方案:
$array = [['3','1','2','2'],['1','2','3','3'],['2','1','1','3']];
$result = [];
foreach(new RecursiveIteratorIterator(new RecursiveArrayIterator($array)) as $value) {
$result[] = $value;
}
echo max($result);
输出:
如果你只是想知道我所理解的最高值 在这个数组中,我想找到最大数,如果数组 包含相同的最大值,然后我们选择一个最大值 随机的 你可以这么做
这将访问所有数组并将值推送到
$result
,然后您只需要一个级别数组并轻松使用max
函数$found=array([3]=>array([2]=>3[4]=>1[5]=>2[6]=>2)[5]=>array([2]=>1[3]=>2[4]=>3[6]=>3[6]=>Array([2]=>3[3]=>2[4]=>2[5]=>3))$fmaxnum=Array();foreach($fk=>$fv){$fmaxnum[$fk]=max($fv);}}}echo“”;打印(fmaxnum);回声“;我像上面那样编写代码我已经将您的注释编辑到代码中。如果你想更新你的问题,请使用你文章下方的“编辑”链接。此外,要在代码标记中获取内容,请将其缩进4个空格。祝你好运你只是想要最高的值,不管它有什么键?
Array
(
[3] => Array
(
[2] => 3
)
[5] => Array
(
[4] => 3
)
[6] => Array
(
[2] => 3
)
)
$array = [['3','1','2','2'],['1','2','3','3'],['2','1','1','3']];
$result = [];
foreach(new RecursiveIteratorIterator(new RecursiveArrayIterator($array)) as $value) {
$result[] = $value;
}
echo max($result);