2011-08-17 8 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

+0

@Kyle - 最後に、これはDBを更新する入力の大きなテーブルになります。 – Iladarsda

+0

テーブルはどのように記入していますか? '* .sql'ファイルは、テキストがすでにどこかに存在すると仮定すればうまくいくでしょうか? – KyleWpppd

答えて

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

さらに、 'print_r($ _ POST)'または 'var_dump($ _ POST)'を使って配列を可視化してください。 – TJHeuvel

+1

'id'と' value'の両方のキーの配列であるので、 'echo $ value'はできません – Phil

+0

@Philよく、あなたは間違いなく配列をエコーすることができます=) – Headshota

1

あなたは$myarrayへの最初の要素として$_POST列を追加しています。あなたはそれを参照したい場合は、単に実行します。スクリプトの中であなただけの$_POSTを経由して、それを呼び出すことができるよう

$myarray = $_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が既に配列である、あなたはその周りに()配列をラップする必要はありません。

代わりにこれを試してみてください:

<?php 

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

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

} 

?> 

注:あなたidvalue配列は対称であるので、これは動作します。彼らの要素数が異なる場合は、別のアプローチをとる必要があります。

+0

これは

アレイ


'のみ2 4の'

ID

アレイ


値をretutnますプラス私は、フィールドの値を表示したい - 入力に挿入されたもの。 – Iladarsda

+0

右、申し訳ありませんが、あなたの名前paramsが配列である部分を見逃しました。私は編集します。 –

+1

このメソッドには注意してください。テキスト入力の場合は問題ありませんが、入力が混在している場合(テキストとチェックボックスなど)、チェックされていないチェックボックスの数は一致しません。 – Phil

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); 

かÂではかなり印刷用CANブラウザ:

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

最近、この 'implode'に遭遇しました。

配列を出力するのに便利です。 http://in2.php.net/implode

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

これは値を出力しますが、キーは出力しないことに注意してください – billrichards

関連する問題