如何比较两个数组并列出第三个数组中的常用项。我想打印第三个数组。请帮帮我们我的结果有两个列表。
<?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)),有些是必修科目。所以我的程序应该能够列出与输入的主题相匹配的所有学位课程。我希望你理解我的问题。请帮助我卡住。
答案 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还有其他强大的实用程序,我建议你看看。 我总是在数据库层外需要自定义数据操作时使用它。