2014-09-30 77 views
0

我希望能夠發佈包含數組...發佈一個數組到PHP文件

$food = array (
    'food_1' => 'ice cream ', 
    'food_2' => 'pizza' 
); 

<input type="text" id="in_foods[]" value="<?=$food;?>" /> 

到另一個頁面,但它似乎並不奏效。我究竟做錯了什麼?

+0

你在做什麼? – diEcho 2014-09-30 12:17:38

+0

您不能在單個輸入字段中發佈非標量數據類型。您可以爲此使用複選框列表。 – TiMESPLiNTER 2014-09-30 12:17:40

+0

你如何在另一個頁面訪問它? – Jenz 2014-09-30 12:17:48

回答

1

一個清潔溶液將是:

$foods = implode(',',$foods); 

1-使用內爆函數陣列轉換成一個字符串

2-將其放置在要提交的輸入文本字段中:

<input type="text" id="foods" value="<?=$food;?>" /> 

3-在其他頁面轉換的字符串返回數組:

$foods = explode(',',$_POST['foods']) 

嘗試;)

+0

這正是我要找的,謝謝! :) – Nomad 2014-09-30 12:26:36

0

由於美食是一個數組。

<input type="text" id="in_foods[]" value="<? 
     if (isset($food)) { echo $food['food_1'].', '.$food['food_2']; } ?>" 
/> 

如果沒有定義$食品數組的大小,那麼你可以使用破滅的功能,使之作爲一個字符串,並可以重複它。

+0

如果'$ food'有3個元素會發生什麼?或者更多? – Machavity 2014-09-30 12:20:39

+0

@Machavity:編輯我的回答 – Naincy 2014-09-30 12:23:23

0

你不能只發布這樣的數據結構。你應該得到一個通知,說你試圖將數組轉換爲字符串。

請考慮將您的數組放入會話中。這樣它保持爲調用之間的數組。

session_start(); 
$_SESSION['food'] = $food; 
0

我想你不想從預先定義好的食物列表中剔出你喜歡的食物或類似的東西。在這種情況下,<input type="text">字段不是正確的選擇。改爲使用<input type="checkbox">(或<select multiple>)。

$foodOptions = array('burger', 'vergtables', 'berries') 

foreach($foodOptions as $foodOpt) { 
    $checked = in_array($foodOpt, $foods)?' checked':null; 
    echo '<input type="checkbox" value="' , $foodOpt , '" name="in_foods[]"', $checked ,'><br>'; 
} 
0

嘗試使用此代碼:

<?php 
$food = array (
    'food_1' => 'ice cream ', 
    'food_2' => 'pizza' 
); 
$food = implode(",", $food); 
?> 
<input type="text" id="in_foods[]" value="<?=$food;?>" />