2012-05-14 138 views
2

目前我正在清理一些创建大量php警告的代码。 我有下面的代码:与php的isset混淆

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

所以我只是想执行此块是该指数1设置。但是在执行脚本时,我仍然在这一行中看到“注意:未定义的偏移量:1 ...”。

那么如何正确的方法来检查在我的数组中指定的索引是否有值?

编辑: 我试过你的解决方案,但它仍然没有按预期工作。 我已经添加了一些调试东西刚刚增加了我的困惑: 我添加了用于测试如下:

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

,其结果是:

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

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

+4

莫比'array_key_exists()'http://php.net/manual/en/function.array-key -exists.php –

+0

尝试'!空($信息)'假设你正在测试?虽然很奇怪的行为。 – Louis

+0

仍然是相同的行为 – soupdiver

回答

2

首先,您可能需要ensu再是$info存在:

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

但我的猜测是,有没有“ - ”比赛中$info[1]你修剪后,和它的存在,只有一个元素被返回(因此,list()会抱怨,有没有1指数)。

+0

我仍然不能真正解释我的调试输出,我添加到我的问题,但它似乎你是对的。爆炸电话后,我必须检查长度。感谢提示:) – soupdiver

4

你必须检查是否$info真的是一个数组第一:

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

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

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

,或者您也可以使用array_key_exists

if (array_key_exists(1, $info)) { 
    // ... 
} 
0

它应该是这样的:

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

希望这将帮助你:)