2013-10-24 52 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>"; 
    } 

}