У меня есть ассоциативный массив состояний какой-либо страны, и названия штатов являются ключами:
array:13 [
"Ontario" => null
"Manitoba" => null
"New Brunswick" => null
"Yukon" => null
"Saskatchewan" => null
"Prince Edward Island" => null
"Alberta" => null
"Quebec" => null
"Nova Scotia" => null
"British Columbia" => null
"Nunavut" => null
"Newfoundland and Labrador" => null
"Northwest Territories" => null
]
И у меня есть другой ассоциативный массив, который содержит все состояния, которые имеют значения:
array:8 [
"Alberta" => 17
"Cairo" => 1
"Calgary" => 1
"ddd" => 4
"gfdxf" => 1
"New Cairo" => 1
"Ontario" => 1
"secret" => 30
]
Теперь мне нужно сопоставить второй массив с первым, чтобы результат был:
array:13 [
"Ontario" => 1
"Manitoba" => 0
"New Brunswick" => 0
"Yukon" => 0
"Saskatchewan" => 0
"Prince Edward Island" => 0
"Alberta" => 17
"Quebec" => 0
"Nova Scotia" => 0
"British Columbia" => 0
"Nunavut" => 0
"Newfoundland and Labrador" => 0
"Northwest Territories" => 0
]
Я создал вложенный l oop, и он работает нормально, но код очень уродливо, теперь есть ли более эффективный способ сделать это?
Мой код:
foreach ($all_states as $state_x => $value_x) {
foreach ($country_states as $state_y => &$value_y) {
if (strtolower($state_x) == strtolower($state_y)) {
$value_y = $value_x;
} elseif ($value_y == NULL) {
$value_y = 0;
}
}
}