PHP无法正确返回

时间:2013-10-24 14:46:51

标签: php return

好的,这没有任何意义,这是我第一次遇到这个问题。

请告诉我,我是愚蠢的东西。

这是我的功能:

function getCountry($n, $origCode)
{
    global $countryData;
    if(strlen($n) > 0)
    {
        if(isset($countryData[$n]))
        {
            //$return = $countryData[$n];
            var_dump($n);
            return $n;
        }
        else
        {
            $n = substr($n, 0, -1);
            getCountry($n, $origCode);
        } 
    }
    else
    {
        echo "ERROR exiting couldn't find code $origCode $count<br>";   
    }

}

这是电话

foreach($file as $line)
{
    $split = explode(",", $line);
    echo "using $split[1]<br>";
    $country = getCountry(trim($split[1]), trim($split[1]));
    var_dump($country);
    echo "<br>";
}

文件数组:

$file = array("AA,93",
                "BB,9370",
                "CC,9378",
                "DD,9377",
                "EE,937",
                "FF,9379",
                "GG,355",
                "HH,35568",
                "II,35567"
            );

国家/地区数据阵列

array('93'=>array('id'=>2')
    '355'=> array('id'=>'3)
);

var_dumps是:

using 93 
string '93' (length=2)
string '93' (length=2)

using 9370 
string '93' (length=2)
null

using 9378 
string '93' (length=2)
null

using 9377 
string '93' (length=2)
null

using 937 
string '93' (length=2)
null

using 9379 
string '93' (length=2)
null

using 355 
string '355' (length=3)
string '355' (length=3)

using 35568 
string '355' (length=3)
null

using 35567 
string '355' (length=3)
null

我根本不理解的是为什么当我在返回值之前的var_dump它没关系但是一旦var_dump退出函数我得到null

这让我感到困惑,我不知道。

任何想法??

此致

利安

1 个答案:

答案 0 :(得分:2)

因为你没有返回值,所以当你递归调用函数时,你应该返回递归调用函数的结果。

在你的其他情况下,你应该回复:

    else
    {
        $n = substr($n, 0, -1);
        return getCountry($n, $origCode);
    } 

你的整个职能变成了:

function getCountry($n, $origCode)
{
    global $countryData;
    if(strlen($n) > 0)
    {
        if(isset($countryData[$n]))
        {
            //$return = $countryData[$n];
            var_dump($n);
            return $n;
        }
        else
        {
            $n = substr($n, 0, -1);
            return getCountry($n, $origCode);
        } 
    }
    else
    {
        echo "ERROR exiting couldn't find code $origCode $count<br>";   
    }

}