首页 > 解决方案 > 一个接收正数的PHP数组函数,返回最大值,如果数组为空则返回0

问题描述

我正在尝试编写一个 PHP 函数,它接收一个正数数组并返回数组中的最大数。虽然如果数组为空,它必须返回 0...

到目前为止,我有:

<?php
function getMaxArray($arr)
{
    $i;
    $max = $arr[0];

    for ($i = 1; $i < $n; $i++) {
        if ($arr[$i] > $max) {
            $max = $arr[$i];
        }
    }
    return $max;
}

但是我不确定如何合并'else 0',我是否应该尝试在'if first'中插入for循环(在我第一次尝试时无法让它工作)?

另外,我如何确保数组只接受正数?我试着问了一些朋友和谷歌搜索,但找不到太多关于这个的...

标签: phparrays

解决方案


我假设您正在学习,那么您的解决方案没有任何问题。然而,这是一个但很多的代码,可以更容易地完成:

$highest = count($array) ? max($array) : 0;

我将分步解释:

  • $example = (statement) ? ifTrue : ifFalse. 它被称为短 if/else,可以读作if(statement){ ifTrue } else{ ifFalse}.
  • 除了真假,还有真假。简化:'>0' 为真,'0' 为假。我们可以在这里使用它:
    我们对 $array 使用计数。这是零或更高。
    • 如果它更高->它的真实性-> ifTrue 将运行。( max($array))
    • 如果它的零 -> 它的假 -> ifFalse 将返回。(0在这种情况下)

或者,您自己的代码可以稍微调整一下,您就有了一个可行的解决方案:

function getMaxArray($arr)
{
    //$i; php we dont declare variables like this.
    $max = 0; // <-- start with zero

    for ($i = 0; $i < $n; $i++) { // <-- start at first $array item
        if ($arr[$i] > $max) {
            $max = $arr[$i];
        }
    }
    return $max;
}

推荐阅读