2013-10-24 204 views
0

好吧,這是沒有意義的,這是我第一次遇到這個問題。PHP沒有正確返回

請告訴我,我很愚蠢或什麼。

這裏是我的功能:

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出來的功能我得到空

這令我困惑,我不知道。

任何想法??

問候

利亞姆

+3

乍一看,我相信你缺少你的電話到'return' 'else'中的getCountry'應該是'return getCountry($ n,$ origCode);' – keithhatfield

+0

在第一個else函數中不返回任何東西 –

+0

dleiftah - 我覺得像個白癡哈哈。非常感謝這很簡單。 – Liam

回答

2

因爲你沒有返回值,當你調用函數的遞歸你應該回到你的recursivelly調用函數的結果。

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

}