php字符串当数组使用isset的问题

$val = 'abcd';
if(isset($val['grp'][0]))
{
    echo '1111
'; } if(isset($val['grp'][1])) { echo '2222
'; }

输出:1111



很奇怪吧,如果直接打印呢?

var_dump($val['grp'][0]);
输出:string 'a' (length=1)

当然开了调试模式还会有警告,但是如果把调试关了,则就是上面的输出



这种情况在for循环中很容易出现,

所以我们在不确定某个变量一定是数组的情况下,最好多加一层,例如下面的判断:

$val = 'abcd';
if(isset($val['grp']) && isset($val['grp'][0]))
{
    echo '1111
'; }


你可能感兴趣的:(PHP)