2013-05-01 102 views
0

$文章反复循环回阵列是:从PHP形式

 $article= array(); 

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

这些都是通过XML获得解析使用SimpleXML 当我提交复选框(但是许多人都打勾)我试图为循环运行,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

如果你不知道如何数组看起来像,这样打印总是有帮助的。 echo“

"; print_r($_POST['article']); echo "
”; – Yordi 2013-05-01 11:49:25

+0

它看起来像这样:数组 ( [0] =>数组 [1] =>数组 [2] =>数组 ) – DOWmad 2013-05-01 11:53:26

+0

因此,似乎你的子阵列的数据项都转换为字符串= “阵列”。当你从XML中读取时,你应该转换为字符串,如下所示:$ item-> title。'然后它会给你很好的字符串。 – Tom 2013-05-01 12:08:08

回答

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.. 
} 
+1

这个!如果你想通过数组,你可以在你的$ _POST脚本中调用它,只需name ='articles'和value ='<?php echo serialize($ articles);?>' ,你可以反序列化它,并且tadaaa ! – Yordi 2013-05-01 11:57:31

+0

我得到更多untada伤心 – DOWmad 2013-05-01 12:10:06

+0

@Yordi我得到这个警告警告:unserialize()[function.unserialize]:节点不再存在第11行save_article.php – DOWmad 2013-05-01 12:51:39