从函数返回数组(PHP)

时间:2009-12-12 21:02:29

标签: 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");
        }
    }

如果函数返回1,则文件处于活动状态。如果它返回一个数组,则意味着该文件已经死亡。它返回的数组是状态代码(0因为它已经死了)以及要向用户显示的错误消息。

现在,我在index.php中有这段代码:

if(is_array($var = CheckLink($match[1], $match[2])))
{
    echo $var[1];
}

我要做的是检查函数的结果是否为数组(意味着链接已死),如果是,则将错误消息回显给用户。但它不起作用,我没有得到任何PHP错误,也没有回应页面的任何内容。

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

2 个答案:

答案 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);