我将此函数编码为使用其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);
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");
}
}
Run Code Online (Sandbox Code Playgroud)
如果函数返回1,则文件处于活动状态.如果它返回一个数组,则意味着该文件已经死亡.它返回的数组是状态代码(0因为它已经死了)以及要向用户显示的错误消息.
现在,我在index.php中有这个代码:
if(is_array($var = CheckLink($match[1], $match[2])))
{
echo $var[1];
}
Run Code Online (Sandbox Code Playgroud)
我要做的是检查函数的结果是否是数组(意味着链接已死),如果是,则将错误消息回显给用户.但它不起作用,我没有得到任何PHP错误,也没有回应页面的任何内容.
对此有何帮助?谢谢.:)
1结果数组中没有键.将echo行更改为echo $var['desc'].
编辑WRT评论:
不,PHP'数组'更像是哈希表:每个值都有一个键,通常是数字,但可以是一个字符串(我说'可以是任何东西',但我不确定是什么的范围可以是PHP的关键).如果你没有指定一个,它就是一个整数,自动增加的键,所以这两个数组是等价的:array('a', 'b', 'c')和array(0 => 'a', 1 => 'b', 2 => 'c').
从技术上讲,没有"第二个元素"可以用[1]访问,因为哈希表是未排序的.你可以访问一个"无密钥"数组,因为它实际上不是无键的:它的关键只是自动定义.