CAKEPHP:如何比较两个数组之间的常见项

时间:2012-06-14 16:02:19

标签: cakephp cakephp-2.1

如何比较两个数组并列出第三个数组中的常用项。我想打印第三个数组。请帮帮我们我的结果有两个列表。

<?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个项目列表/ em>,其中compulsory为真。

我的课程的实质是我希望申请者进入他们的科目,申请不同的学位课程。然后,每个学位都有必要的科目(数组(2)),有些是必修科目。所以我的程序应该能够列出与输入的主题相匹配的所有学位课程。我希望你理解我的问题。请帮助我卡住。

2 个答案:

答案 0 :(得分:0)

如果我理解,我认为你做错了。您进行两次数据库查询,之后您需要查找常用项。如何在查询中直接进行? :)是不是有一些很好的理由?

编辑:或在用户提交内容后进行第三次查询。一些ajax和voilá。

答案 1 :(得分:0)

我不打算讨论为什么你可能想要比较数组。但确实阵列操作技能总是派上用场。

CakePHP有Set Array Management类。查找数组差异可能需要的是Set::diff函数。它“计算Set和数组,两个Set或两个数组之间的差异”。以下示例来自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还有其他强大的实用程序,我建议你看看。 我总是在数据库层外需要自定义数据操作时使用它。