0

OK、これは意味がありません。この問題が発生したのは初めてです。

私が愚かであるか何かを教えてください。

これが私の機能です:

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 に答える