1

ここに私の問題があります、

選択した月の誕生日を持つすべての人を表示する必要があります。特定のテーブル セルにデータを配置する方法については既に理解しています。唯一の問題は、意図しない他のテーブル セルにもデータが表示されることです。下の図では、Ori Hendricksオンになっている必要2がありますが、他のセルに表示されます。

ここに画像の説明を入力

カレンダーのデータはこちら

Array
(
    [2] => Array
        (
            [0] => Nomlanga Bentley**81
            [1] => Ori Hendricks**325
        )

    [5] => Array
        (
            [0] => Rina Nash**161
        )

    [10] => Array
        (
            [0] => Gary Mullins**252
        )

    [12] => Array
        (
            [0] => Nissim Donovan**207
        )

    [13] => Array
        (
            [0] => Harper Trevino**380
        )

    [14] => Array
        (
            [0] => Sacha Arnold**167
            [1] => Wade Hughes**322
            [2] => Brennan Long**3
        )

    [15] => Array
        (
            [0] => Gary Hart**290
        )

    [21] => Array
        (
            [0] => Alisa Bowman**201
        )

    [22] => Array
        (
            [0] => Dustin Meyers**330
        )

    [26] => Array
        (
            [0] => Ifeoma Swanson**331
        )

    [28] => Array
        (
            [0] => McKenzie Norton**327
            [1] => Asher Rasmussen**47
        )

    [29] => Array
        (
            [0] => Branden Conway**7
            [1] => Luke Sullivan**176
        )

    [30] => Array
        (
            [0] => Slade Moon**16
        )

)

MY_calendarクラスを作成し、独自のジェネレーターを作成しました。セルにデータを表示するための関連コードは次のとおりです

if (isset($data[$day]))
{
    // Cells with content
    $temp = ($is_current_month == TRUE AND $day == $cur_day) ? $this->temp['cal_cell_content_today'] : $this->temp['cal_cell_content'];
    if(is_array($data[$day]))
    {       
        foreach($data[$day] as $k => $v)
        {
            $name = substr($v,0,strpos($v,'**'));
            $student_enrollment_id = substr($v,strpos($v,'**')+2);
            $data_formatted[$k] = '<a href="'.site_url('profile/student/'.$student_enrollment_id).'" target="_blank" class="btn btn-mini">'.trim($name).'</a>';
        }
        $data_from_array = implode('',$data_formatted);

        $out .= str_replace('{day}', $day, str_replace('{content}', $data_from_array, $temp));
    }else{
        $out .= str_replace('{day}', $day, str_replace('{content}', $data[$day], $temp));
    }
}
else
{
    // Cells with no content
    $temp = ($is_current_month == TRUE AND $day == $cur_day) ? $this->temp['cal_cell_no_content_today'] : $this->temp['cal_cell_no_content'];
    $out .= str_replace('{day}', $day, $temp);
}

これを行う方法が他にありません。助けてください。

4

1 に答える 1

2

配列インデックスが最後のループからの値を保持しているため、問題が発生しています。

上に貼り付けた MY_calendar クラスのコード スニペットをわずかに変更するだけです。

<?php

if (isset($data[$day]))
{
    // Cells with content
    $temp = ($is_current_month == TRUE AND $day == $cur_day) ? $this->temp['cal_cell_content_today'] : $this->temp['cal_cell_content'];
    if(is_array($data[$day]))
    {       
        foreach($data[$day] as $k => $v)
        {
            $name = substr($v,0,strpos($v,'**'));
            $student_enrollment_id = substr($v,strpos($v,'**')+2);
            $data_formatted[$k] = '<a href="'.site_url('profile/student/'.$student_enrollment_id).'" target="_blank" class="btn btn-mini">'.trim($name).'</a>';
        }
        $data_from_array = implode('',$data_formatted);

        $out .= str_replace('{day}', $day, str_replace('{content}', $data_from_array, $temp));
        $data_formatted = array_fill(0,count($data_formatted), null);  // line added to reset the values in previous loop
    }else{
        $out .= str_replace('{day}', $day, str_replace('{content}', $data[$day], $temp));
    }
}
else
{
    // Cells with no content
    $temp = ($is_current_month == TRUE AND $day == $cur_day) ? $this->temp['cal_cell_no_content_today'] : $this->temp['cal_cell_no_content'];
    $out .= str_replace('{day}', $day, $temp);
}

これで問題が解決するはずです。

于 2013-07-29T08:26:49.817 に答える