使用foreach循环比较两个数组

时间:2012-06-21 12:07:18

标签: php mysql codeigniter-2

在PHP中,我将编辑一个实体,假设一个名为:ABC 的项目,这个项目属于许多国家,同时添加我使用的<select multiple="multiple">项目并将所有选定的国家/地区存储在 projectCountries 表中。现在,当我开始编辑这个项目时,我使用相同的逻辑并稍作改动:

  1. 从国家/地区填充所有国家/地区
  2. 从projectCountries表中获取与projectId相关联的所有国家/地区
  3. 我有两个阵列:

    Array ( 
        [0] => Array ( [countryId] => 1 [countryName] => Pakistan ) 
        [1] => Array ( [countryId] => 2 [countryName] => China ) 
    ) 
    

    步骤1的输出

    Array ( 
        [0] => Array ( [pcId] => 1 [countryId] => 1 [projectId] => 1 ) 
        [1] => Array ( [pcId] => 2 [countryId] => 2 [projectId] => 1 ) 
    )
    

    步骤2的输出

    但我很困惑如何证明名为China的国家已经与该项目相关联(已在<select multiple="multiple">中选择)

    因为创建了<select multiple="multiple">我使用了 foreach 循环。现在我无法猜测如何比较 foreach 循环中的两个数组,以便在selected="selected"中设置<option>

2 个答案:

答案 0 :(得分:3)

遍历所有国家/地区并检查projectCountries输出数组中是否存在该国家/地区。

这样的事情:

$pc_list = array();
foreach($project_countries as $pc) {
    $pc_list[] = $pc['countryId'];  
}

foreach($countries as &$country) {
    if(in_array($country['countryId'], $pc_list)) {
        $country['selected'] = TRUE;
    }
}

答案 1 :(得分:1)

选项1: 运行foreach循环for step1。在每次迭代中,您都可以遍历第二个数组并检查是否存在具有当前id的国家/地区(来自第一个循环)。

选项2: 将SQL-Query更改为类似的内容(例如,使用连接):

CountryId CountryName ProjectId
1巴基斯坦1
2中国1 3德国null