php循环从表单重复返回数组

时间:2013-05-01 11:43:44

标签: php simplexml

$ article是一个数组:

        $article= array();

        //values
        $article['title'] = $item->title;
        $article['url'] = $item->link;
        $article['description'] = $item->description;

这些是使用simpleXML通过xml解析获得的 当我提交复选框时(无论多少都被勾选)我尝试运行循环,foreach甚至是嵌套,但它只是打印数组。

我有一种复选框形式:

echo'<td><input type="checkbox" name="article[]" value="'.$article.'"><br>  </td>';

我从表单中获取结果如下:

   $value = $_POST['article'];

然后

  for ($row = 0; $row < 3; $row++)
    {
       echo "The row number  $value[$row]";
       echo '<br/>';

        for ($col = 0; $col < 3; $col++)
         {
          echo "$value[$row][$col]";

           echo '<br/>';

    }}

我认为它可能是一个多维关联数组但却无处可去。 我真的可以和某人指出我做错了什么。

使用Yordi的解决方案找到了解决方案,但是billyonecan也注意到将xml对象转换为字符串。

所以我的价值观应该是  //值

        $article['title'] = (string)$item->title;
        $article['url'] = (string)$item->link;
        $article['description'] = (string)$item->description;
在序列化之前

1 个答案:

答案 0 :(得分:0)

您无法回显数组(因此,请查看下面的编辑) - 这就是您在checkbox值内尝试执行的操作。 您可以手动创建索引,并回显相应的值。

正如@Yordi所指出的,你可以serialize数组:

<input type="checkbox" name="article[]" value="<?php echo htmlentities(serialize($article)); ?>" />

然后unserialize将其发布到服务器后:

foreach ($_POST['article'] as $a) {
    $value = unserialize($a);
    echo $value['title']; // url, description..
}