0

連想配列と foreach を使用してデータを取得することについて質問しましたが、このデータ構造から必要なテーブルを作成する方法を考えるのに苦労しています。

$dailytotals私はフォームの配列を持っています

Array
(
    [204] => Array
    (
        [1] => Array
           (
               [leads] => 9
           )

        [2] => Array
            (
                [leads] => 15
            )

    )

    [200] => Array
    (
        [1] => Array
            (
                [leads] => 7
            )

        [2] => Array
            (
                [leads] => 16
            )

        [3] => Array
            (
                [leads] => 5
            )
)

したがって、メイン配列に任意の数のサブ配列を配置し、その中に任意の数のサブ配列を含めることができます。

これまでのところ、テーブル ヘッダーを作成するという壮大なタスクを管理してきました。

<table>
    <tr>
        <th>Clinic</th>

        <?php
         // get unique columns - not all clinics will have leads for all columns
        $columns = array();
        foreach ($dailytotals as $key => $arr) {
            $columns = array_unique(array_merge($columns, array_keys($arr)));
        }

        foreach ($columns as $index => $campaignid) {
           echo '<th>' . $campaignid . '</th>';
        }
       ?>
    </tr>

しかし、私は今、テーブル本体を構築する方法に完全に行き詰まっています。

私が構築したい構造は次のとおりです。

Clinic  |  1  |  2  |  3  |
___________________________
204     |  9  |  15 |  0  |
200     |  7  |  16 |  5  |
4

3 に答える 3

1

これを試して

foreach ($dailytotals as $key => $arr) {
  echo '<tr>';
  foreach ($columns as $campaignid) {
    $val = isset($arr[$campaignid]) ? $arr[$campaignid]['leads'] : 0;
    echo '<td>' . $val . '</td>';
  }
  echo '</tr>';
}
于 2012-11-08T12:53:11.763 に答える
1

このコードはテストされていませんが、少し変更してみてください (必要な場合)。

 <table>
  <tr>
    <th>Clinic</th>
  <?php
     // get unique columns - not all clinics will have leads for all columns
    $columns = array();
    $max=0;
    foreach ($dailytotals as $key => $arr) {
        $columns = array_unique(array_merge($columns, array_keys($arr)));
    }

    foreach ($columns as $index => $campaignid) {
       echo '<th>' . $campaignid . '</th>';
       $max=$campaignid;
    }
    ?>
  </tr>

   <?php
    $columns = array();
    foreach ($dailytotals as $key => $arr) {
        for($i=0;$i< $max;$++)
         {
            echo "<tr>";
            if(is_set($arr[i])
             {
                echo "<td>".$arr[i]."</td>";
             }
            else
             {
                echo "<td>0</td>";
             }
            echo "</tr>";
         }
    }
    ?>
于 2012-11-08T12:37:08.303 に答える
1

ネストされたループが必要です。これを試して:

<table>
    <tr>
        <th>Clinic</th>

        <?php
         // get unique columns - not all clinics will have leads for all columns
        $columns = array();
        foreach ($dailytotals as $key => $arr) {
            $columns = array_unique(array_merge($columns, array_keys($arr)));
        }

        foreach ($columns as $index => $campaignid) {
           echo '<th>' . $campaignid . '</th>';
        }
       ?>
    </tr>
    <?php
        foreach($dailytotals as $clinic => $data)
        {
            echo '<tr>';
            echo '<td>'.$clinic.'</td>';
            foreach($columns as $column)
            {
                echo '<td>';
                echo isset($data[$column]) ? $data[$column]['leads'] : 0;
                echo '</td>';
            }
            echo '</tr>';
        }

    ?>
</table>
于 2012-11-08T12:35:45.977 に答える