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

时间:2015-05-06 08:03:22

标签: php string explode

我正在尝试从逗号分隔列表中获取值,因为我使用了$query="INSERT INTO p_management_projects (project_number,title, segment, type_project) SELECT project_number, title, segment, type_project FROM `p_management_leads` AS leads, `p_management_projects` AS projects WHERE leads.status='Project' AND leads.transfered='No' AND leads.projects_number != projects.projects_number"; 方法,但它仅适用于某些情况,仅在其他情况下它会发出以下通知:

  

注意:未定义的偏移量

我的代码:

案例1(正常工作):

explode()

输出:

$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 ;

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

1 2 3 4 5

输出:

$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 ;

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

还有其他好方法吗?

2 个答案:

答案 0 :(得分:6)

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

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

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

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

答案 1 :(得分:0)

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