这是多维数组
$arr = array(
array(141,151,161),
2,
3,
array(
101,
202,
array(303,404)
)
);
如何找到最高值,上面数组中的结果应为404 阵列深度可能超过3。
这是我上次尝试的代码,但我注意到这只能检查到3深度,我需要它可以检查无限深度
function MaxArray($arr){
foreach($arr as $valueDepth1){
if(is_array($valueDepth1)){
foreach($valueDepth1 as $valueDepth2){
if(is_array($valueDepth2)){
foreach($valueDepth2 as $valueDepth3){
$checingArray[]=$valueDepth3;
}
}else{
$checingArray[]=$valueDepth2;
}
}
}else{
$checingArray[]=$valueDepth1;
}
}
return max($checingArray);
}
答案 0 :(得分:9)
function highest($array) {
foreach($array as $key => $value) {
if (is_array($value)) {
$array[$key] = highest($value);
}
}
sort($array);
return array_pop($array);
}
您可以在此处看到它:http://codepad.org/4xPFsU1U
答案 1 :(得分:3)
您可以尝试这样的事情:
$max = -1;
array_walk_recursive($arr, 'arrmax');
function arrmax($item, $key) {
global $max;
$max = ($key > $max) ? $key : $max;
}
echo "Maximum number is : " . $max;
答案 2 :(得分:3)
这是我在谷歌第一页上找到的功能。搜索引擎是查找内容的理想场所;)
function recursive_array_max($a) {
foreach ($a as $value) {
if (is_array($value)) {
$value = recursive_array_max($value);
}
if (!(isset($max))) {
$max = $value;
} else {
$max = $value > $max ? $value : $max;
}
}
return $max;
}
答案 3 :(得分:2)
这可以是一个很好的起点:
getMax($array)
{
if ( is_array($array) )
{
// NOTE: PHP_MIN doesn't exist. Is just to let you understand the logic
$max = PHP_MIN;
foreach($array as $value)
{
if ( is_array($value) )
$value = getMax($value);
if ($value > $max)
$max = $value;
}
return $max;
}
else
return $array
}
答案 4 :(得分:0)
试一下
function MaxRecursive($arr,$maxVal = null)
{
try {
if(! isset($arr) || ! is_array($arr) )
throw new Exception("The array is empty");
for($i=0;$i<count($arr);$i++)
{
if(is_array($arr[$i]))
$maxVal = MaxRecursive($arr[$i],$maxVal);
else
{
if($maxVal == null)
$maxVal = $arr[$i];
if($arr[$i] > $maxVal )
$maxVal = $arr[$i];
}
}
return $maxVal;
}
catch (Exception $e)
{
echo $e->getMessage();
}
}
function MaxArray2($arr)
{
return MaxRecursive($arr,null);
}
答案 5 :(得分:0)
getMax($arr);
function getMax($arr) {
foreach($arr as $arrr) {
echo max($arrr[2]);
}
}
答案 6 :(得分:-2)
你必须使用递归,只需一个循环。对于每个元素,如果它是一个数字,我们将它与当前最高值进行比较,如果它是一个数组,我们递归调用该函数来检查数组:
function getHeighestNumber($array = array()) {
static $number = 0;
foreach ($array AS $key=>$value) {
if(is_array($value)) {
$number = getHeighestNumber($value);
} else if($value > $number) {
$number = $value;
}
}
return $number;
}