0

配列 ($rows) にデータを格納しました。配列を読み取り、動的テーブルを生成するには、 foreach 関数を使用します。

<table>

    foreach ($rows as $row) {
        echo "<tr>";
        echo "<td>" . $row['field1'] . "</td>";
        echo "<td>" . $row['field2'] . "</td>";
        echo "<td>" . $row['filed3'] . "</td>";
        echo "</tr>"; 
    }

</table>

私の目標は、表示される最後の行の TR 要素のクラスを変更するために、配列の最後の値 (末尾) を見つけることです。どうすればこれを行うことができますか?ありがとう

4

4 に答える 4

1
foreach ($rows as $row) {
$is_last_row = ++$i == count($rows);
        echo "<tr>";
        echo "<td>" . $row['field1'] . "</td>";
        echo "<td>" . $row['field2'] . "</td>";
        echo "<td>" . $row['filed3'] . "</td>";
        echo "</tr>"; 
    }

ここで $i は未使用の変数でなければなりません。

于 2013-03-16T12:27:45.270 に答える
1

これを試して:

foreach ($rows as $key => $row) {
    $end = end($rows) === $row ? 'class="last"' : '';
    echo "<tr $end>";
    echo "<td>" . $row['field1'] . "</td>";
    echo "<td>" . $row['field2'] . "</td>";
    echo "<td>" . $row['filed3'] . "</td>";
    echo "</tr>"; 
}

この方法は、多次元配列でも機能します。

http://codepad.org/HQG9ytBX

編集します。コメントで指摘されているように、このアプローチは、配列内の一部の値が (最後の値と) 重複している場合、誤った最終結果を引き起こす可能性があります。正しい防弾バージョンは次のとおりです。

foreach ($rows as $key => $row) {
    $end = end($rows) === $row && $key === key($rows) ? 'class="last"' : '';

    // ...
于 2013-03-16T12:26:52.507 に答える
0

これを試して

$numItems = count($rows);
$i = 0;
foreach($rows as $row) {

$trClass = 'firstclass';
if(++$i === $numItems) 
{
$trClass = 'lastclass';
}


echo "<tr class='$trclass'>";
    echo "<td>" . $row['field1'] . "</td>";
    echo "<td>" . $row['field2'] . "</td>";
    echo "<td>" . $row['filed3'] . "</td>";
    echo "</tr>"; 
}  
于 2013-03-16T12:36:50.020 に答える
0
// first, let's find out the last key
end($rows);
$last = key($rows);

// then just loop over
foreach ($rows as $key => $row) {
        if ($key == $last) {
            // last leaf of the summer...
        }
        echo "<tr>";
        echo "<td>" . $row['field1'] . "</td>";
        echo "<td>" . $row['field2'] . "</td>";
        echo "<td>" . $row['filed3'] . "</td>";
        echo "</tr>"; 
}
于 2013-03-16T12:39:07.577 に答える