0

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

请告诉我我是愚蠢的什么的。

这是我的功能:

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

这让我很困惑,我不知道。

有任何想法吗??

问候

利亚姆

4

1 回答 1

2

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

在您的 else 条件下,您应该返回:

    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>";   
    }

}
于 2013-10-24T14:51:26.790 回答