为什么下面的函数返回null而不是1?

时间:2013-06-04 10:36:27

标签: php

我已经写了下面的函数来处理一个数组但它没有返回我的想法它输出$ input [0]返回我1.不明白为什么它返回NULL。我在那种情况下返回的任何东西都会返回NULL。如果有人知道,请解释我。感谢。

function endWithNumber($input)
{
    if (count(array_unique($input)) === 1) {        
        return $input[0];       
    }
    $maxVal = max($input);
    $maxKey = array_search($maxVal,$input);

    foreach ($input as $k => $v) {
        if ($maxKey != $k && $maxVal != $v) {
            $newVal  = ($maxVal - $v);
            $input[$maxKey] = $newVal;
            break;
        }
    }

    endWithNumber($input);
}

$input = array(6,10,15);  
var_dump(endWithNumber($input));
exit;

1 个答案:

答案 0 :(得分:1)

在您的数组计数为1之前,您的函数不会返回任何内容。因为return语句位于if块中。

<?php
function endWithNumber($input)
{
    if (count(array_unique($input)) == 1) 
        return $input[0];       

    $maxVal = max($input);
    $maxKey = array_search($maxVal,$input);

    foreach ($input as $k => $v) 
    {
        if ($maxKey != $k && $maxVal != $v) 
        {
            $newVal  = ($maxVal - $v);
            $input[$maxKey] = $newVal;
            break;
        }
    }   

    return endWithNumber($input);
}

$input = array(6,10,15);  
var_dump(endWithNumber($input));

exit;   
?>