2

目前我正在清理一些会产生大量 php 警告的代码。我有以下代码:

if(isset($info[1])) {
        list($artist, $song) = explode(" - ", trim(strip_tags($info[1])));
        $fullname = trim(strip_tags($info[1]));
    }

所以我只想执行这个块是设置索引1。但是在执行脚本时,我仍然在这一行得到“注意:未定义的偏移量:1 in ....”。

那么检查数组中指定索引处是否有值的正确方法是什么?

编辑:我尝试了你的解决方案,但它仍然没有按我的预期工作。我添加了一些调试内容,这增加了我的困惑:我添加了以下内容进行测试:

echo "<pre>";
print_r($info);
echo "</pre>";
echo ".";
die();

结果是:

Array
(
   [0] => 
)
.
Played @
[1] => Song Title

现在我真的不知道如何解释输出......你能给我一个提示吗!?

4

3 回答 3

4

您必须首先检查是否$info真的是一个数组:

if (is_array($info) && isset($info[1])) { 
    // ...
}

或者如果你只有数字键,你可以使用count

if (count($info) > 1) { 
    // ...
}

或者你也可以使用array_key_exists

if (array_key_exists(1, $info)) {
    // ...
}
于 2012-05-14T10:38:08.383 回答
2

首先,您可能需要确保$info存在:

if (isset($info, $info[1]))

但我的猜测是,修剪后没有' - '匹配$info[1],并且在那里只返回一个元素(因此,list()会抱怨没有 1 索引)。

于 2012-05-14T10:38:17.030 回答
0

它应该是这样的:

if( isset($info) && count($info) > 0 ) {
    if ( isset($info[1]) && !empty($info[1]) ) {
        ... your code goes here ...
    }
}

希望对你有帮助 :)

于 2012-05-14T10:42:12.007 回答