2013-05-01 37 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