使用PHP循环$ _POST数组值

时间:2016-11-14 02:47:16

标签: php arrays for-loop post

如果我有这个$ _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?

2 个答案:

答案 0 :(得分: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)打印其内容,以便了解其内容和结构。

<强> 更新

迭代每个会话的所有值:

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
    }
}

答案 1 :(得分:1)

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

extractFeatures

输出:

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