2

在 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循环中的两个数组,以便我设置selected="selected".<option>

4

2 回答 2

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;
    }
}
于 2012-06-21T12:18:45.877 回答
1

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

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

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

于 2012-06-21T12:17:42.663 回答