0

名、姓、および年齢の配列を渡す次のフォームがあります。

<form method="post" action="form.php">
    <label for="first_name">First Name:</label>
    <input type="text" name="first_name[]" id="first_name" />
    <br />
    <label for="last_name">Last Name:</label>
    <input type="text" name="last_name[]" id="last_nametext" />
    <br />
    <label for="age">Age:</label>
    <input type="text" name="age[]" id="age" />
    <br />
    <br />
    <br />
    <label for="first_name">First Name:</label>
    <input type="text" name="first_name[]" id="first_name" />
    <br />
    <label for="last_name">Last Name:</label>
    <input type="text" name="last_name[]" id="last_nametext" />
    <br />
    <label for="age">Age:</label>
    <input type="text" name="age[]" id="age" />
    <br />
    <br />
    <br />
    <label for="first_name">First Name:</label>
    <input type="text" name="first_name[]" id="first_name" />
    <br />
    <label for="last_name">Last Name:</label>
    <input type="text" name="last_name[]" id="last_nametext" />
    <br />
    <label for="age">Age:</label>
    <input type="text" name="age[]" id="age" />
    <br />
    <input type="submit" name="save" id="save" value="Save" />
</form>

フォームを送信すると、PHP で次の配列構造を受け取ります。

Array
(
    [first_name] => Array
        (
            [0] => Dave
            [1] => Lisa
            [2] => Support
        )

    [last_name] => Array
        (
            [0] => Lucas
            [1] => Newman
            [2] => Services
        )

    [age] => Array
        (
            [0] => 1
            [1] => 2
            [2] => 3
        )

    [save] => Save
)

上記の配列を次の構造に変換して、一度に 1 つのレコード (first_name、last_name、age) を MySQL データベース/テーブルに追加するループを作成するにはどうすればよいですか。

たとえば、first_name[0]、last_name[0]、および age[0] は 1 つのレコードです。

データ挿入をループするには、配列を次のようにする必要があります。

Array
(
    [0] => Array
        (
            [first_name] => Steve
            [last_name] => Lucas
            [age] => 12
        )

    [1] => Array
        (
            [first_name] => Lisa
            [last_name] => Newman
            [age] => 44
        )

    [2] => Array
        (
            [first_name] => Owen
            [last_name] => McDowell
            [age] => 36
        )

    [save] => Save
)
4

2 に答える 2

1
$count = count ($array_in);

$array_out = array ();

for ($i = 0; $i < $count; $i++)
{
    $array_out[] = array
    (
        'first_name' => $array_in['first_name'][$i],
        'last_name' => $array_in['last_name'][$i],
        'age' => $array_in['age'][$i]               
    );

}

print_r ($array_out);
于 2013-09-18T22:38:01.077 に答える
0

個人的には、(可能であれば)フォームを変更して、実際に必要な配列を出力する必要があると思います。

現在、最初は必要なものを出力できたのに、必要なものに変更するためだけに出力したくないものを出力しています。これはコードが少なくなることを意味するため、よりきれいで高速になり、保守が容易になります。

HTML フォームを次のように変更できます。各入力
の を変更したname=""ので、各フォームは同じ配列に追加されますが、各フォーム (つまり、最初、最後、年齢) には独自のサブ配列があります。

 <form method="post" action="form.php">
    <label for="first_name">First Name:</label>
    <input type="text" name="array[0][first_name]" id="first_name" />
    <br />
    <label for="last_name">Last Name:</label>
    <input type="text" name="array[0][last_name]" id="last_nametext" />
    <br />
    <label for="age">Age:</label>
    <input type="text" name="array[0][age]" id="age" />
    <br />
    <br />
    <br />
    <label for="first_name">First Name:</label>
    <input type="text" name="array[1][first_name1]" id="first_name" />
    <br />
    <label for="last_name">Last Name:</label>
    <input type="text" name="array[1][last_name]" id="last_nametext" />
    <br />
    <label for="age">Age:</label>
    <input type="text" name="array[1][age]" id="age" />
    <br />
    <br />
    <br />
    <label for="first_name">First Name:</label>
    <input type="text" name="array[2][first_name]" id="first_name" />
    <br />
    <label for="last_name">Last Name:</label>
    <input type="text" name="array[2][last_name]" id="last_nametext" />
    <br />
    <label for="age">Age:</label>
    <input type="text" name="array[2][age]" id="age" />
    <br />
    <input type="submit" name="save" id="save" value="Save" />
</form>

これはあなたにこれを与えるでしょう:

Array
(
  [array] => Array 
    ( 
      [0] => Array
        (
            [first_name] => Steve
            [last_name] => Lucas
            [age] => 12
        )

      [1] => Array
        (
            [first_name] => Lisa
            [last_name] => Newman
            [age] => 44
        )

      [2] => Array
        (
            [first_name] => Owen
            [last_name] => McDowell
            [age] => 36
        )

      [save] => Save
   )
)

データベースに挿入するときに、それらを簡単にループできます。



あなたが望んでいたことを正確に行うには:

Array
(
    [0] => Array
        (
            [first_name] => Steve
            [last_name] => Lucas
            [age] => 12
        )
//etc

配列名を数値として設定する必要があるため、次のように、各サブ配列のインデックスを必要に応じて数値として設定します。

 <form method="post" action="form.php">
    <label for="first_name">First Name:</label>
    <input type="text" name="0[first_name]" id="first_name" />
    <br />
    <label for="last_name">Last Name:</label>
    <input type="text" name="0[last_name]" id="last_nametext" />
    <br />
    <label for="age">Age:</label>
    <input type="text" name="0[age]" id="age" />
    <br />
    <br />
    <br />
    <label for="first_name">First Name:</label>
    <input type="text" name="1[first_name]" id="first_name" />
    <br />
    <label for="last_name">Last Name:</label>
    <input type="text" name="1[last_name]" id="last_nametext" />
    <br />
    <label for="age">Age:</label>
    <input type="text" name="1[age]" id="age" />
    <br />
    <br />
    <br />
    <label for="first_name">First Name:</label>
    <input type="text" name="2[first_name]" id="first_name" />
    <br />
    <label for="last_name">Last Name:</label>
    <input type="text" name="2[last_name]" id="last_nametext" />
    <br />
    <label for="age">Age:</label>
    <input type="text" name="2[age]" id="age" />
    <br />
    <input type="submit" name="save" id="save" value="Save" />
</form>

これは良い考えではないと思います。

于 2013-09-18T23:20:40.927 に答える