0

このように、数行の入力を数回同じにすることができるフォームがあります。

<input type="text" name="company[]"><input type="text" name="type[]">
<input type="text" name="company[]"><input type="text" name="type[]">
<input type="text" name="company[]"><input type="text" name="type[]">

次に、これらのフィールドをデータベースに入力する必要があるため、入力フィールドをループして正常に動作します。

しかし、私には1つの問題があります。ループ内のフィールドが空になることがあります。つまり、会社には価値がありますが、タイプはありません。では、ループが次のようなキーに空の値を出力するようにするにはどうすればよいですか。

Array(
   company => array(
          [0] => string0
          [1] => string1
          [2] => string2
     )
   type => array(
          [0] => 
          [1] => string1
          [2] => string2
     )
)

タイプの最初のキーが空であることがわかります。どうすればそれを実現できますか?

私はこれをやろうとしていますが、結果はありません、

$postFields = array('company', 'type');
$postArray = array();
foreach($postFields as $postVal){
    if($postVal == ''){
        $postArray[$postVal] = '';
    }
    else {
        $postArray[$postVal] = $_POST[$postVal];
    }
}

助けに感謝します、

4

1 に答える 1

2

このHTML:

<input type="text" name="company[]"><input type="text" name="type[]">

配列のキーを動的に入力します。0テキストフィールドの1つが送信されている限り、空の要素を取得することはないと思います。代わりに、配列の長さが一致しなくなり、どの番号が省略されたかを判別できなくなります。

解決策は、次のようにHTMLでキーを明示的に記述することです。

<input type="text" name="company[0]"><input type="text" name="type[0]">
<input type="text" name="company[1]"><input type="text" name="type[1]">
<input type="text" name="company[2]"><input type="text" name="type[2]">

これで、配列をループでき、特定のキーが設定されていない場合は、空の文字列に設定できます。

foreach( range( 0, 2) as $i) {
    if( !isset( $_POST['company'][$i]))
        $_POST['company'][$i] = "";

    if( !isset( $_POST['type'][$i]))
        $_POST['type'][$i] = "";
}
于 2012-06-28T21:05:06.727 に答える