2016-11-14 117 views
0

循环如果我有这样的$ _POST数组:

session[1][0]=50& 
session[1][1]=60& 
session[2][0]=70& 
session[3][0]=80 

我如何使用for循环获取会话和项目的价值?我认为这会起作用,但事实并非如此。

foreach ($_POST['session'] as $i => $value) { 
    $session = $session[$i]; 
    $item = $value; 

    $query->bindValue(':session', $session, PDO::PARAM_INT); 
    $query->bindValue(':item', $value, PDO::PARAM_INT); 
    $query->execute(); 

} 

因此,第一次迭代循环会产生$ session = 1和$ item = 50?

+0

您正在使用AJAX? –

+0

是使用ajax重新编码列表项目 – user1392897

回答

1

从您的代码中,$_POST['session'][$i]$value将是相同的东西,其中第一次迭代包含array(0 => 50, 1 => 60)

在第一次迭代中$session尚未定义,因此您无法访问$session[$i]

为了得到你想要的东西来实现:

foreach ($_POST['session'] as $i => $value) { 
    $session = $i; //1 
    $item = $value[0]; //50, and $value[1] is 60 
} 

要了解更多有关变量的内容是什么,你可以打印使用print_r($value)例如它的内容,所以你会知道它的内容和结构看起来像。

UPDATE

要遍历所有的值,为每个会话:

foreach ($_POST['session'] as $session => $value) { 
    foreach ($value as $item) { 
     //do whatever you want here with the $session and $item 
     //over all the iterations, here we will have: 
     //iteration#1 $session=1, $item=50 
     //iteration#2 $session=1, $item=60 
     //iteration#3 $session=2, $item=70 
     //iteration#4 $session=3, $item=80 
    } 
} 
+0

感谢,这是有道理的 - 但我如何遍历循环中的$ value数组,所以我可以访问$ value [1],例如项目数量未知的地方? – user1392897

+0

我更新了我的答案 – elfan

1

假设您想要打印的所有变量的值,你应该在这里使用嵌套循环。

foreach ($_POST['session'] as $i => $value) { /* Accessing session[1], session[2] ... */ 
    foreach ($value as $val) { /* session[1][0], session[1][1] ..... */ 
     echo $val; 
    } 
} 

输出:

50&60&70&80 
+0

谢谢是的我最终希望使用查询中的值 - 我已更新问题以显示此问题 – user1392897