4

私は次のコードを持っています:

<tr>
    <td width="60%">
        <dl>
            <dt>Full Name</dt>
            <dd>
                <input name="fullname[]" type="text" class="txt w90" id="fullname[]" value="<?php echo $value; ?>" />
            </dd>
        </dl>
    </td>
    <td width="30%">
        <dl>
            <dt>Job Title</dt>
            <dd>
                <input name="job_title[]" type="text" class="txt w90" id="job_title[]" value="<?php echo $value2; ?>" />
            </dd>
        </dl>
    </td>
</tr>

上記のコードが数行あるとしましょう。$_POST['fullname']配列の値を繰り返して取得するにはどうすればよい$_POST['job_title']ですか?

4

5 に答える 5

10

それは単なる配列です:

foreach ($_POST['fullname'] as $name) {
    echo $name."\n";
}

問題が2つの配列を並行して反復したい場合は、それらの1つを使用してインデックスを取得します。

for ($i=0; $i < count($_POST['fullname']); $i++) {
    echo $_POST['fullname'][$i]."\n";
    echo $_POST['job_title'][$i]."\n";
}
于 2008-12-20T08:42:28.643 に答える
3

Vinkoの回答にかなり近いので、これを以前に削除しました。

for ($i = 0, $t = count($_POST['fullname']); $i < $t; $i++) {
    $fullname = $_POST['fullname'][$i];
    $job_title = $_POST['job_title'][$i];
    echo "$fullname $job_title \n";
}

0 ~ N-1 の数値ではない元のインデックスを使用

$range = array_keys($_POST['fullname']);
foreach ($range as $key) {
    $fullname = $_POST['fullname'][$key];
    $job_title = $_POST['job_title'][$key];
    echo "$fullname $job_title \n";
}

これは一般的な情報です。SPL DualIterator を使用すると、次のようなものを作成できます。

$dualIt = new DualIterator(new ArrayIterator($_POST['fullname']), new ArrayIterator($_POST['job_title']));

while($dualIt->valid()) {
    list($fullname, $job_title) = $dualIt->current();
    echo "$fullname $job_title \n";
    $dualIt->next();
}
于 2008-12-20T09:26:43.390 に答える
1

あなたが解決しようとしている問題は、同じインデックスを持つ $_POST['fullname'][] と $_POST['jobtitle'][] から値のペアを取得していると思います。

for ($i = 0, $rowcount = count($_POST['fullname']); $i < $rowcount; $i++)
{
    $name = $_POST['fullname'][$i]; // get name
    $job  = $_POST['jobtitle'][$i]; // get jobtitle
}
于 2008-12-20T09:35:49.427 に答える
1

私があなたを正しく理解していれば、基本的に並行して反復処理したい 2 つの配列があります。

以下のようなものがうまくいくかもしれません。andの代わりに$a1and$a2を使用$_POST['fullname']$_POST['jobtitle']ます。

<?php
$a1=array('a','b','c','d','e','f');
$a2=array('1','2','3','4','5','6');

// reset array pointers    
reset($a1); reset($a2);
while (TRUE)
{
  // get current item
  $item1=current($a1);
  $item2=current($a2);
  // break if we have reached the end of both arrays
  if ($item1===FALSE and $item2===FALSE) break;  
  print $item1.' '. $item2.PHP_EOL;
  // move to the next items
  next($a1); next($a2);
}
于 2008-12-20T09:47:24.723 に答える
0

Vinko と OIS の両方の回答は優れています (私は OIS を高く評価しました)。ただし、テキスト フィールドを常に 5 部印刷する場合は、各フィールドに具体的な名前を付けることができます。

<?php $i=0; while($i < 5) { ?><tr>
    ...
    <input name="fullname[<?php echo $i; ?>]" type="text" class="txt w90" id="fullname[<?php echo $i; ?>]" value="<?php echo $value; ?>" />
于 2008-12-20T09:33:24.143 に答える