0

2 つの配列を比較し、共通項目を 3 番目の配列にリストするにはどうすればよいですか。3番目の配列を印刷したい。みんな助けてください。結果は 2 つのリストに表示されます。

<?php 

    $appsubjects = $this->ProgrammeChoice->
    ApplicantsDetail->ApplicantAlevelQualification->
    find('list',array('fields'=> array('subject_code'),
    'conditions'=>array('ApplicantAlevelQualification.applicants_detail_id'=>$app_id)));

     $progrequirements[] =
          $this->ProgrammeChoice->Programme->ProgrammeRequirementsSubject->
    find('all',array('fields'= >        array('programme_code','subject_code','programme_name','compulsory'),
    'conditions'=>
    array('subject_code'=>$s_code,'compulsory'=>'true')));

?>

だから今、私はArray(1)Array(2)subject_code同じである項目の 3 番目のリストを取得する方法がわかりません。compulsory

私のプログラムの本質は、応募者に自分の科目を入力してもらい、さまざまな学位プログラムに応募してもらいたいということです。次に、学位ごとに必須の科目 ( Array(2) ) と必須の科目があります。したがって、私のプログラムは、入力された科目に一致するすべての学位プログラムを一覧表示できるはずです。私の質問を理解していただければ幸いです。私が行き詰まっているのを助けてください。

4

2 に答える 2

0

配列を比較する理由については説明しません。しかし実際には、配列操作のスキルは常に役に立ちます。

CakePHP にはSet Array Managementクラスがあります。配列の違いを見つけるために必要なのはSet::diff関数です。「セットと配列、2 つのセット、または 2 つの配列の違いを計算します」。次の例は、CakePHP 2.0 Book からのものです。

    <?php
    $a = array(
        0 => array('name' => 'main'),
        1 => array('name' => 'about')
    );
    $b = array(
        0 => array('name' => 'main'),
        1 => array('name' => 'about'),
        2 => array('name' => 'contact')
    );
    
    $result = Set::diff($a, $b);
    /* $result now looks like:
        Array
        (
            [2] => Array
                (
                    [name] => contact
                )
        )
    */
    $result = Set::diff($a, array());
    /* $result now looks like:
        Array
        (
            [0] => Array
                (
                    [name] => main
                )
            [1] => Array
                (
                    [name] => about
                )
        )
    */
    $result = Set::diff(array(), $b);
    /* $result now looks like:
        Array
        (
            [0] => Array
                (
                    [name] => main
                )
            [1] => Array
                (
                    [name] => about
                )
            [2] => Array
                (
                    [name] => contact
                )
        )
    */
    
    $b = array(
        0 => array('name' => 'me'),
        1 => array('name' => 'about')
    );
    
    $result = Set::diff($a, $b);
    /* $result now looks like:
        Array
        (
            [0] => Array
                (
                    [name] => main
                )
        )
    */
?>

Set には他にも強力なユーティリティがあり、ぜひチェックしてみてください。DBレイヤーの外でカスタムデータ操作が必要な場合、私はいつもそれを使用しています。

于 2012-06-17T07:49:06.353 に答える