0

如何比较两个数组并在第三个数组中列出常见项目。我想打印第三个数组。请帮助各位。我的结果出现在两个列表中。

<?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相同的项目的第三个列表,其中是正确的。compulsory

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

4

2 回答 2

0

如果我理解了,我认为你做错了。您进行了两次数据库查询,然后您想要找到共同的项目。直接在查询中做呢?:) 有什么好的理由不这样做吗?

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

于 2012-06-15T11:03:49.543 回答
0

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

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

于 2012-06-17T07:49:06.353 回答