8

PHP/HTML を使用してテーブルを印刷しようとしています。次のように配列内に格納されたデータ:

Array ( [id] => 1 [first_name] => mike [last_name] => lastname )

私のコードは次のとおりです。実行され、エラーはありませんが、出力は期待どおりではありません。PHP/HTML コードは次のとおりです。

<table>

<tr>
    <th>1</th>
    <th>2</th>
    <th>3</th>
</tr>

<?php foreach ($res as $item): ?>
<tr>
     <td><?php echo $item['id'] ?></td>
     <td><?php echo $item['first_name'] ?></td>
     <td><?php echo $item['last_name'] ?></td>
</tr>
<?php endforeach; ?>

</table>

私が得る結果は、アイテムの最初の文字です:

1       2      3
1       1      1
m       m      m
l       l      l

私が間違っているのかわかりませんか?説明をいただければ幸いです。

アップデート:

エラーのない PHP コード:

<?php 
    foreach ($result as $row) 
    { 
        echo '<tr>';
        echo '<td>' . $row['id'] . '</td>';
        echo '<td>' . $row['first_name'] . '</td>';
        echo '<td>' . $row['last_name'] . '</td>';
        echo '</tr>';
    }
?>

そして、これは「行」が1つしかない私の配列です:

< PRE > タグでラップされた print_r($result) を使用した $result 変数の出力

Array
(
    [id] => 3
    [first_name] => Jim
    [last_name] => Dude
)

これが私が得ている結果です:

実際のテーブル結果:

ID    First Name  Last Name
3     3           3
J     J           J
D     D           D

ただし、配列に 0 または 1 以上 (つまり 2 以上) がある場合は、完全に機能します。配列内に要素の「行」が1つしかない場合、機能しません。たとえば、この配列は完全に機能します。

  Array
    (
    [0] => Array
        (
            [id] => 3
            [first_name] => Jim
            [last_name] => Dude
        )

    [1] => Array
        (
            [id] => 4
            [first_name] => John
            [last_name] => Dude2
        )
    )

私はこの結果を得ます:

ID      First Name    Last Name
3       Jim         Dude
4       John            Dude2

何が間違っているのかよくわかりません。アイデアは、テーブル内の項目数を変数に読み取ってから$result、この変数を使用して HTML テーブル内のすべての要素を出力することを知りません。テーブルには、O 要素、1 行の要素、1 行以上の要素を含めることができます。

4

8 に答える 8

3

foreachループを削除しないでください。配列を作成するコードが表示されない場合、これを実行していると思います。

$res = array('id' => 1, 'first_name'=>'mike', 'last_name'=>'lastname');

実際にあなたがおそらくやりたいことはこれです:

$res[] = array('id' => 1, 'first_name'=>'mike', 'last_name'=>'lastname');

角かっこ[]は、すべての値の配列を配列に追加します。このようにして、個々の値ではなく、値のコレクションとしてそれぞれをループできます。

于 2012-12-26T23:18:50.930 に答える
2

あなたのデータ構造は行列ではなく配列です:

Array ( [id] => 1 [first_name] => mike [last_name] => lastname )

やりたいことをするには、次のようなものが必要です。

Array(
    [0] => Array ( [id] => 1 [first_name] => mike [last_name] => lastname ),
    [1] => Array ( [id] => 1 [first_name] => mike [last_name] => lastname )
    ........
);

それとは別に、コードは問題ないようです...

于 2012-12-26T22:59:38.020 に答える
1

これは、Webページで発生した同様の問題を解決した方法です. セッション変数を使用して、特定の教師が教えるすべてのクラスの配列をページに表示したいと考えました。主題があなたに関係ないかもしれませんが、一般的な要点が人々の助けになることを願っています.

<?php 

    echo "<table border='1' style='border-collapse: 
    collapse;border-color: silver;'>";  
    echo "<tr style='font-weight: bold;'>";  
    echo "<td width='150' align='center'>Class</td>";  
    echo "</tr>";

    foreach ($query_class_array as $row) 
     { 
      echo '<td width="150" align=center>' . $row['Class'] . '</td>';
      echo '</tr>';
     }
?>
于 2013-10-11T13:01:07.630 に答える