在PHP中,我将编辑一些实体,例如一个名为:ABC的项目,该项目属于许多国家/地区,而添加此项目时,我使用了<select multiple="multiple">
并将所有选定的国家/地区存储在项目国家/地区表中。现在,当我开始编辑这个项目时,我使用相同的逻辑,但稍作更改:
- 从国家/地区表中填充所有国家/地区
- 从项目国家/地区表中获取与项目ID关联的所有国家/地区
我得到了两个数组:
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"
。
遍历所有国家/地区并检查该国家/地区是否存在于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 的 foreach 循环。在每次迭代中,您可以遍历第二个数组并检查是否有具有当前 id 的国家/地区(从第一个循环开始)。
选项 2:将 SQL 查询更改为类似的东西(例如,使用连接):
国家编号国家名称项目编号
1 巴基斯坦 1
2 中国 1
3 德国空