У меня есть два массива: $all_languages
и $taken_languages
. Один содержит все языки (например, 200 или что-то еще), но второй – языки, которые были выбраны раньше (от 0 до 200).
Мне нужно удалить все языки, которые были приняты ( $taken_languages
) из $all_languages
и вернуть новый массив – $available_languages
$all_languages
.
Мое решение было два цикла, но, во-первых, это не работает, как ожидалось, во-вторых – это «не круто», и я считаю, что есть лучшие решения! Можете ли вы указать мне правильный путь?
Это то, что я делал раньше, но, как я уже сказал, он работает не так, как ожидалось …
if (!empty($taken_languages)) { foreach ($all_languages as $language) { foreach ($taken_languages as $taken_language) { if ($taken_language != $language) { $available_languages[] = $language; break; } } } } else { $available_languages = $all_languages; }
Спасибо, совет!
PHP имеет встроенную функцию для этого (и почти все остальное: P)
$available_languages = array_diff($all_languages, $taken_languages);
Руководство PHP (array_diff)
Функция array_diff
будет работать для вас. http://php.net/manual/en/function.array-diff.php