从函数返回数组(PHP)

Jos*_*eph 1 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);
        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错误,也没有回应页面的任何内容.

对此有何帮助?谢谢.:)

Tor*_*dek 6

1结果数组中没有键.将echo行更改为echo $var['desc'].

编辑WRT评论:

不,PHP'数组'更像是哈希表:每个值都有一个键,通常是数字,但可以是一个字符串(我说'可以是任何东西',但我不确定是什么的范围可以是PHP的关键).如果你没有指定一个,它就是一个整数,自动增加的键,所以这两个数组是等价的:array('a', 'b', 'c')array(0 => 'a', 1 => 'b', 2 => 'c').

技术上讲,没有"第二个元素"可以用[1]访问,因为哈希表是未排序的.你可以访问一个"无密钥"数组,因为它实际上不是无键的:它的关键只是自动定义.