注意:将爆炸分配给列表时未定义的偏移量

Notice: Undefined offset while assigning explode to a list

我正在尝试从逗号分隔的列表中获取一个值,因为我使用了 explode() 方法,但它仅在某些情况下有效,仅在其他情况下它会发出通知,例如:

Notice: Undefined offset

我的代码:

案例 1(正常工作):

$permission = 1,2,3,4,5 ; // this is fetching values from database 

list($p1, $p2,$p3,$p4,$p5) = explode(',', $permission);
echo $p1. "</BR>".$p2. "</BR>".$p3. "</BR>".$p4. "</BR>".$p5 ;

输出:

1 2 3 4 5

情况 2(注意:未定义的偏移量:4 和注意:未定义的偏移量:3):

$permission = 1,2,3 ;// this is fetching values from database

list($p1, $p2,$p3,$p4,$p5) = explode(',', $permission);
echo $p1. "</BR>".$p2. "</BR>".$p3. "</BR>".$p4. "</BR>".$p5 ;

输出:

1 2 3 with (Notice: Undefined offset: 4  and Notice: Undefined offset: 3)

如何克服这个通知。或者我的方法本身就是错误的。

还有什么好的方法吗?

这是因为它无法在列表中的每个变量中保存一个值,因为您的字符串只有 2 个逗号 == 3 个值。

所以要解决这个问题,只需将其保存在一个数组中并循环遍历该数组,如下所示:

$arr = explode(',', $permission);

foreach($arr as $v)
    echo $v . "<br>";

在你的第二个例子中,你只有三个值从数据库中返回 - 但你试图设置 5