【问题标题】:Compare two arrays using foreach loop使用 foreach 循环比较两个数组
【发布时间】:2012-06-21 12:07:17
【问题描述】:

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

  1. 填充国家表中的所有国家
  2. 从 projectCountries 表中获取与 projectId 关联的所有国家/地区

我得到了两个数组:

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 的输出

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

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

【问题讨论】:

    标签: php mysql codeigniter-2


    【解决方案1】:

    遍历所有国家并检查该国家是否存在于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;
        }
    }
    

    【讨论】:

      【解决方案2】:

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

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

      CountryId CountryName 项目Id
      1 巴基斯坦 1
      2 中国 1
      3 德国 null

      【讨论】:

        猜你喜欢
        • 2022-10-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-29
        相关资源
        最近更新 更多