2012-06-21 4 views
2

В PHP я собираюсь изменить некоторые лица позволяют сказать проект под названием: ABC этих проекты принадлежит многим стран при добавлении этого проекта я использовал <select multiple="multiple"> и хранить все выбранные страны в проектCountries таблица. Теперь, когда я начала редактирования этого проекта, поэтому я использую ту же логику, с небольшим изменением:Сравнение двух массивов с помощью цикла Еогеаспа

  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"> I б/у foreach петля. Теперь я не мог догадаться, как сравнить два массива в foreach так, чтобы я установил selected="selected" в <option>.

ответ

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; 
    } 
} 
+0

Большое спасибо дружище. ;) –

+1

Спасибо @Filype это работает как шарм –

1

Вариант 1: Запустите цикл foreach для шага 1. На каждой итерации вы можете перебирать второй массив и проверять, есть ли страна с текущим идентификатором (из первого цикла).

Вариант 2: Изменение SQL-запрос, чтобы что-то подобное (с объединением, например):

CountryId CountryName ProjectID
1 Пакистан 1
2 Китай 1
3 Германия нулевой

Смежные вопросы