好的,这没有任何意义,这是我第一次遇到这个问题。
请告诉我,我是愚蠢的东西。
这是我的功能:
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
这让我感到困惑,我不知道。
任何想法??
此致
利安
答案 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>";
}
}