2

複雑なループからテーブルを作成する際に問題が発生しました。

このテーブルは7日間のカレンダーテーブルで構成されており、各日にはその下の日のイベントが含まれている必要があります。

Array
(
    [2012-12-16] => Array
        (
        )

    [2012-12-17] => Array
        (
            [0] => Array
                (
                    [date] => 2012-12-17
                    [time_booked] => 00:09:00
                    [time_start] => 00:00:00
                    [time_end] => 00:00:00
                    [name] => maha mostafa elrashed
                    [first_name] => marwan
                    [title] => root cannal
                )

            [1] => Array
                (
                    [date] => 2012-12-17
                    [time_booked] => 09:00:00
                    [time_start] => 00:00:00
                    [time_end] => 00:00:00
                    [name] => demo demo eldemo
                    [first_name] => marwan
                    [title] => ultrasound
                )

        )

    [2012-12-18] => Array
        (
            [0] => Array
                (
                    [date] => 2012-12-18
                    [time_booked] => 09:00:00
                    [time_start] => 00:00:00
                    [time_end] => 00:00:00
                    [name] => demo demo eldemo
                    [first_name] => marwan
                    [title] => root cannal
                )

        )

    [2012-12-19] => Array
        (
        )

    [2012-12-20] => Array
        (
        )

    [2012-12-21] => Array
        (
        )

    [2012-12-22] => Array
        (
        )

)

この配列の例は、テーブルに変換したいと思います。現在、最も簡単な方法はulとして毎日印刷し、floatがそれらを残しておくことですが、私が本当に望んでいるのは、将来jQueryを使用してそのテーブルを並べ替えることができるようにそれらからテーブルを作成することです。

foreach($ztable as $t){
    echo"\n<ul style='float:left;width:140px'>";
    foreach($t as $r){
        echo "<li class='{$r['first_name']}'>{$r['name']}</li>";
    }
        echo "</ul>\n";
}

助言がありますか?ちなみに私はCodeigniter2を使用しています

編集:

上の表は提案された答えからのもので、下の表は私がどのようになりたいかです

上の表は提案された答えからのもので、下の表は私がどのようになりたいかです。

4

3 に答える 3

2

あなたの質問は非常に漠然としています。あなたは<ul>実際にテーブルを構築したいのに、作業中のコードを持っている間に を構築したいと言っています。うーん。

テーブルを作成する方法は次のとおりです。

// list of fields that will be rows
$fields = array(
    'date' => 'Date', 
    'time_booked' => 'Time of booking', 
    'time_start' => 'Start time',
    'time_end' => 'End time',
    'name' => 'Name',
    'first_name' => 'First name',
    'title' => 'Title'
    );

// echo table header
echo '<table border="1"><tr><th>Day</th>';
foreach ($fields as $field)
{
    echo '<th>' . $field . '</th>';
}
echo '</tr>';

// echo table rows
foreach($ztable as $day => $data)
{
    echo '<tr><td>' . $day . '</td>';
    // if some field is not present for current day, we show '-'
    foreach ($fields as $field_name => $field)
    {
        echo '<td>' . (isset($data[$field_name]) ? $data[$field_name] : '-') . '</td>';
    }
    echo '</tr>';
}
echo '</table>';
于 2012-12-19T14:17:10.833 に答える
1

あなたが望むもので写真を追加したので、私は結果を得るいくつかの見栄えの良いコードをまとめました:

//provided $a is the array
//table header with dates
echo "<table class='table table-bordered'>";
echo "<tr>";

foreach($a as $date => $data){
    echo "<th>$date</th>";
}

echo "</tr>";

//table row for appointment dates
echo "<tr>";

foreach($a as $k=>$v){

    //if the array value isn't empty, we have data
    if(! empty($v)){

        echo "<td>";
        echo "<ul>";

        //loop through the array to get all the names
        foreach($v as $k => $v){

            echo "<li>".$v['name']."</li>";

        }
        echo "</ul>";
        echo "</td>";

    }else{
            //there was no data for the date; empty td
        echo "<td></td>";

    }

}

echo "</tr></table>";

あなたを正しい軌道に乗せるのに十分なはずです。

于 2012-12-19T16:53:16.130 に答える
0

配列が正しくフォーマットされていないと思います。このフォーマットを試してください。

Array('2012-12-16' => Array(),
            '2012-12-17' => Array
                (
                '0' => Array
                    (
                    'date' => '2012-12-17',
                    'time_booked' => '00:09:00',
                    'time_start' => '00:00:00',
                    'time_end' => '00:00:00',
                    'name' => 'maha mostafa elrashed',
                    'first_name' => 'marwan',
                    'title' => 'root cannal'
                ),
                '1' => Array
                    (
                    'date' => '2012-12-17',
                    'time_booked' => '09:00:00',
                    'time_start' => '00:00:00',
                    'time_end' => '00:00:00',
                    'name' => 'demo demo eldemo',
                    'first_name' => 'marwan',
                    'title' => 'ultrasound'
                )
            ),
            '2012-12-18' => Array
                (
                '0' => Array
                    (
                    'date' => '2012-12-18',
                    'time_booked' => '09:00:00',
                    'time_start' => '00:00:00',
                    'time_end' => '00:00:00',
                    'name' => 'demo demo eldemo',
                    'first_name' => 'marwan',
                    'title' => 'root cannal'
                )
            ),
            '2012 - 12 - 19' => Array
            (
            ),
            '2012 - 12 - 20' => Array
            (
            ),
            '2012 - 12 - 21' => Array
            (
            ),
            '2012 - 12 - 22' => Array
            (
            )
        );
于 2012-12-19T14:34:32.117 に答える