2011-08-17 61 views
5

我有下表。

<form method="post" action="test.php"> 
    <input name="id[]" type="text" value="ID1" /> 
    <input name="value[]" type="text" value="Value1" /> 
    <hr /> 

    <input name="id[]" type="text" value="ID2" /> 
    <input name="value[]" type="text" value="Value2" /> 
    <hr /> 

    <input name="id[]" type="text" value="ID3" /> 
    <input name="value[]" type="text" value="Value3" /> 
    <hr /> 

    <input name="id[]" type="text" value="ID4" /> 
    <input name="value[]" type="text" value="Value4" /> 
    <hr /> 

    <input type="submit" /> 
</form> 

而且test.php的文件

<?php 

    $myarray = array($_POST); 
    foreach ($myarray as $key => $value) 
    { 
    echo "<p>".$key."</p>"; 
    echo "<p>".$value."</p>"; 
    echo "<hr />"; 
    } 

?> 

但它僅僅是返回這樣的:<p>0</p><p>Array</p><hr />

我做錯了嗎?

+0

是否有一個原因,你試圖將多個文本字段收集到同一個名稱?另外如果你不關心它看起來有多漂亮,那麼`echo「

」。 print_r($ value,TRUE)。 「

」;`可能是你的朋友。 – KyleWpppd 2011-08-17 13:41:25

+0

@Kyle - 最後這將是一個更新數據庫的BIG表。 – Iladarsda 2011-08-17 13:46:54

+0

你是怎麼填表的?假設文本已經存在,`* .sql`文件是不是一個好選擇? – KyleWpppd 2011-08-17 13:54:38

回答

11
<?php 

foreach ($_POST as $key => $value) { 
    echo '<p>'.$key.'</p>'; 
    foreach($value as $k => $v) 
    { 
    echo '<p>'.$k.'</p>'; 
    echo '<p>'.$v.'</p>'; 
    echo '<hr />'; 
    } 

} 

?> 

這將工作訪問您的「ID」和「價值」的數組,你的第一個解決方案是試圖打印陣列,因爲你的價值是一個數組。

1

剛:

foreach ($_POST as $key => $value) { 

    echo "<p>".$key."</p>"; 
    echo "<p>".$value."</p>"; 
    echo "<hr />"; 

} 
1

您要添加的$_POST陣列作爲第一個元素$myarray。如果你想引用它,只是做:

$myarray = $_POST; 

然而,這可能是沒有必要的,因爲你可以通過$_POST在你的腳本只是調用它。

0

$_POST是一個數組本身,你不需要做一個數組。你所做的是將$_POST數組嵌套到一個新數組中。這就是爲什麼您打印Array。 更改爲:

foreach ($_POST as $key => $value) { 

    echo "<p>".$key."</p>"; 
    echo "<p>".$value."</p>"; 
    echo "<hr />"; 

} 
0

$ _POST已經是一個數組。試試這個:

foreach ($_POST as $key => $value) { 
    echo "<p>".$key."</p>"; 
    echo "<p>".$value."</p>"; 
    echo "<hr />"; 
} 
5

$ _POST已經是一個數組了,所以你不需要在它周圍包裝array()。

試試這個:

<?php 

for ($i=0;$i<count($_POST['id']);$i++) { 

    echo "<p>".$_POST['id'][$i]."</p>"; 
    echo "<p>".$_POST['value'][$i]."</p>"; 
    echo "<hr />"; 

} 

?> 

注:這工作,因爲你的idvalue陣列是對稱的。如果他們有不同數量的元素,那麼你需要採取不同的方法。

1

你爲什麼要將$_POST數組包裝在一個數組中?

您可以使用以下

// assuming the appropriate isset() checks for $_POST['id'] and $_POST['value'] 

$ids = $_POST['id']; 
$values = $_POST['value']; 

foreach ($ids as $idx => $id) { 
    // ... 
} 

foreach ($values as $idx => $value) { 
    // ... 
} 
0

因爲你嵌套數組,然後其實我推薦一個遞歸方法:

function recurse_into_array($in, $tabs = "") 
{ 
    foreach($in as $key => $item) 
    { 
     echo $tabs . $key . ' => '; 
     if(is_array($item)) 
     { 
      recurse_into_array($item, $tabs . "\t"); 
     } 
     else 
     { 
      echo $tabs . "\t" . $key; 
     } 
    } 
} 

recurse_into_array($_POST); 
23

的foreach循環工作得很好,但你也可以簡單地

print_r($_POST); 

或者在一個漂亮的印刷瀏覽器:

echo "<pre>"; 
print_r($_POST); 
echo "</pre>"; 
1

最近遇到了這個'內爆'。

可能對輸出數組有用。 http://in2.php.net/implode

echo 'Variables: ' . implode(', ', $_POST);