从函数返回数组(PHP)
我将此函数编码为使用其API检查Rapidshare链路的状态:从函数返回数组(PHP),php,function,Php,Function,我将此函数编码为使用其API检查Rapidshare链路的状态: function CheckLink($fileid, $filename) { $q = file_get_contents("http://api.rapidshare.com/cgi-bin/rsapi.cgi?sub=checkfiles_v1&files=$fileid&filenames=$filename"); $r = explode(",", $q);
function CheckLink($fileid, $filename)
{
$q = file_get_contents("http://api.rapidshare.com/cgi-bin/rsapi.cgi?sub=checkfiles_v1&files=$fileid&filenames=$filename");
$r = explode(",", $q);
switch ($r[4])
{
case 0:
return array('status' => "0", 'desc' => "File not found");
break;
case 1:
return 1;
break;
case 2:
return 1;
break;
case 3:
return array('status' => "0", 'desc' => "Server down");
break;
case 4:
return array('status' => "0", 'desc' => "File marked as illegal");
break;
case 5:
return array('status' => "0", 'desc' => "Anonymous file locked");
break;
case 6:
return 1;
break;
default:
return array('status' => "0", 'desc' => "Unknown error");
}
}
如果函数返回1,则文件处于活动状态。如果它返回一个数组,则表示该文件已死亡。它返回的数组是状态代码(0,因为它已死亡)和要向用户显示的错误消息
现在,我在index.php中有以下代码:
if(is_array($var = CheckLink($match[1], $match[2])))
{
echo $var[1];
}
我试图做的是检查函数的结果是否是数组(意味着链接已断开),如果是,则向用户回显错误消息。但它不工作,我没有收到PHP错误,也没有向页面回显任何内容
有什么帮助吗?谢谢。:) 结果数组中没有键
1
。将echo
行更改为echo$var['desc']
编辑WRT注释:
不,PHP“数组”更像是哈希表:每个值都有一个键,通常是数字,但可以是字符串(我会说“可以是任何东西”,但我不确定PHP中键的范围)。如果不指定一个,它将被设置为一个整数,自动递增键,因此这两个数组是等效的:array('a','b','c')
和array(0=>a',1=>b',2=>c')
从技术上讲,[1]不能访问“第二个元素”,因为哈希表是未排序的。您可以访问“无键”数组,因为它实际上不是无键数组:它的键只是自动定义的。结果数组中没有键
1
。将echo
行更改为echo$var['desc']
编辑WRT注释:
不,PHP“数组”更像是哈希表:每个值都有一个键,通常是数字,但可以是字符串(我会说“可以是任何东西”,但我不确定PHP中键的范围)。如果不指定一个,它将被设置为一个整数,自动递增键,因此这两个数组是等效的:array('a','b','c')
和array(0=>a',1=>b',2=>c')
从技术上讲,[1]不能访问“第二个元素”,因为哈希表是未排序的。您可以访问“无键”数组,因为它实际上不是无键数组:它的键只是自动定义的。您是否打印了
$var?
$var = CheckLink($match[1], $match[2]);
var_dump(is_array($var));
print_r($var);
您是否打印了
$var?
$var = CheckLink($match[1], $match[2]);
var_dump(is_array($var));
print_r($var);
啊哈,真是个愚蠢的错误。我认为无论数组的结构如何,都可以引用这样的数组元素。谢谢:)这个答案看起来不错。考虑一个更简单的接口,没有数组…如果有问题,只需返回一个字符串,否则返回1。。。或者进一步,如果有错误,则返回错误,否则返回null。。。只是个主意。啊哈,真是个愚蠢的错误。我认为无论数组的结构如何,都可以引用这样的数组元素。谢谢:)这个答案看起来不错。考虑一个更简单的接口,没有数组…如果有问题,只需返回一个字符串,否则返回1。。。或者进一步,如果有错误,则返回错误,否则返回null。。。只是一个想法。我知道这不是问题所在,但您正在使
break
语句冗余,因为您在到达任何break
语句之前退出函数。我知道这不是问题所在,但您正在使break
语句冗余,因为您在任何break
语句已到达。