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