0
<table class="table table-striped table-framed table-centered">
    <thead>
        <tr>
            {foreach from=$columns key=num item=columninfo}
                <th><font color="black">{$columninfo.columnname}</font></th>
            {/foreach}
            <th>&nbsp;</th>
        </tr>
    </thead>
    <tbody>
        {foreach from=$rows key=num item=rowinfo}
            <tr>
                <td><font color="black">{$rowinfo}</font></td>
                <td><a href="database.php?action=viewtable&table={$tableinfo.tablename}&database={$currentdatabase}"><input class="btn btn-danger" type="button" value="Delete" onclick="return confirm('Are you sure you would like to delete this row?');"/></td></a>
            </tr>
        {/foreach}
    </tbody>
</table>

配列内のすべてのデータを出力するようにしようとしましたが、2 番目の配列 $rows は何も出力しません。

最初のものはうまく機能し、列のすべての名前を出力します。

2 番目の配列は次のようになります。

Array ( [0] => Array ( [ID] => 3 [Name] => Eirik [Age] => 20 ) )

私がやろうとしているのは、データベースにアクセスしてテーブル、列、行を表示できるデータベース管理システムを作成することです。現在、行が足りないだけです。すべての列名を取得し、テーブル ヘッダーを作成してから、行に移動します。ここでの問題は、行をテーブルに出力しようとすると、データベースごとに列名が異なるため、列名を使用して配列にアクセスできないことです。

4

1 に答える 1

1

あなたは正しい道を進んでいます。最初の foreach 内で使用されているのと同じパターンに従ってください。

$rowinfoは配列であり、印刷する場合はその要素にアクセスする必要があります。$rowinfo['ID'](または) と記述するだけで、配列$rowinfo.IDの ID 要素にアクセスできます。$rowinfo

印刷する要素ごとに繰り返します。

補足: foreach ブロックにはよりクリーンな PHP 構文を使用できます。

{foreach $rows as $num => $rowinfo}

と同等です

{foreach from=$rows key=num item=rowinfo}

しかし、私の意見では、はるかに読みやすいです。

編集に関して、さまざまな列(名前とおそらくその番号)を持つ動的配列を印刷する方法は、次のアプローチを試すことができます。

 {foreach $rows as $num => $rowinfo}
      <tr>
          <td>
          {foreach $rowinfo as $key => $value}
              {$key}: {$value} {* /*of course you'll need to decide HOW to render them */ *}
          {/foreach}
          </td>
          <td>[...]</td></a>
      </tr>
 {/foreach}

基本的に、2 番目の配列にあるすべての行を外側の foreach で循環させます。内側の行では、単一の行のコンテンツを循環し、そのキー (列名) とそれに関連付けられた値を選択します。

于 2013-09-19T10:27:22.423 に答える