私は2つの配列を持っています。一つは全ての選択肢があり、他の選択肢は「赤」でなければなりません。

コントローラー:

    $params = array(
        'fields' => array('Course.id', 'Course.weekstart'),
        'conditions' => array(
            'Course.program_id' => $program_id
        )
    );    
    $paramsflagged = array(
        'conditions' => array(
            'Course.course_full' => 1,
            'Course.program_id'  => $program_id         
         ),
         'fields' => array('Course.id', 'Course.weekstart')
    );
    $flaggedcourses = $this->Course->find('list', $paramsflagged);
    $courses = $this->Course->find('list', $params);
    $this->set('courses', $courses);
    $this->set('flaggedcourses', $flaggedcourses);

すべてのオプションの選択リストを生成するビュー(配列コースを使用):


Courses array=>

Array
(
   [2836] => 4 16:40:00
   [2835] => 3 13:20:00
)

FlaggedCourses array=>

Array
(
    [2835] => 3 13:20:00
)

ですから、フラグ付き配列にあったオプションに「クラスを追加する」ことができる、そのビュー内に選択肢の新しい配列を作成する最良の方法は何でしょうか?

1

3 答え

多次元配列を使用する

Array
(
   [2836] => array('value'=> '4 16:40:00', 'flagged' => '')
   [2835] => array('value'=> '3 13:20:00', 'flagged' => 'selected')
)


0
追加された

0
追加された
どこ? OPのコードを単にコピーしてif文を追加しました。私はそこに構文エラーがないと確信しています..
追加された 著者 Yes Barry,
確かにあなたはPHPに新しいものでなければならないか、私が気づいていないルールを使った奇妙なバージョンを使用しなければならないが、あなたはそれについて間違っている。文法的に私のコードスニペットには何も問題はありません。
追加された 著者 Yes Barry,
if():/ ** code * /} のように、同じコントロール構造を参照している可能性があります。同様に、 if(){/ ** code */endif; も同様です。 そのがあなたの意図したとおりであれば、そうです。そうでなければ私は正しい。
追加された 著者 Yes Barry,
追加された 著者 Yes Barry,
構文エラー ...
追加された 著者 ajreal,
コードブロックが代替PHP構文を使用すると、すべての制御文も同じ構文になっていなければなりません(MUST)。つまり、 if():... endif;
追加された 著者 ajreal,

お試しください

foreach ($courses as $key=>$course):
    if (isset($flaggedcourses[$key])):
        $color = ' style="color:red"';
    else:
        $color = '';
    endif;

    echo <<
    option;

endforeach;
0
追加された
PHP - 日本のコミュニティ [ja]
PHP - 日本のコミュニティ [ja]
4 参加者の

このグループではPHPについて話します。 パートナー:kotaeta.com