Если вы не заботитесь о заказе, вы можете использовать этот
function getNotificationTopicByAppNames(array $topicNames, array $apps)
{
$topics = [];
foreach($apps as $app){
$topics = array_merge($topics, preg_filter('/^/', $app.'_', $topicNames));
}
return $topics;
}
print_r(getNotificationTopicByAppNames($topicNames,$apps));
Выход
Array
(
[0] => one_app_one_noti
[1] => one_app_two_noti
[2] => one_app_three_noti
[3] => two_app_one_noti
[4] => two_app_two_noti
[5] => two_app_three_noti
)
Песочница
Вы также можете переключитьсяциклы и использовать $
вместо постфикса вместо префикса.Который оказывается в том же порядке, что и у вас.Я думал о префиксе как способ удалить цикл.Тогда я подумал, почему бы не перевернуть его.
function getNotificationTopicByAppNames(array $topicNames, array $apps)
{
$topics = [];
foreach($topicNames as $topic){
$topics = array_merge($topics, preg_filter('/$/', '_'.$topic, $apps));
}
return $topics;
}
print_r(getNotificationTopicByAppNames($topicNames,$apps));
Вывод
Array
(
[0] => one_app_one_noti
[1] => two_app_one_noti
[2] => one_app_two_noti
[3] => two_app_two_noti
[4] => one_app_three_noti
[5] => two_app_three_noti
)
Песочница
Хитрость здесь заключается в использовании preg_filter
.
http://php.net/manual/en/function.preg-filter.php
preg_filter - Выполните поиск по регулярному выражению и замените
Таким образом, мы ищем с ^
начало или $
конец, который нене поймать ничего, чтобы заменить, а затем мы просто добавим то, что мы хотимЯ использовал это раньше, когда хотел префиксить целый массив чем-то и т. Д.
Я не мог проверить его в классе, поэтому я сделал его обычной функцией, поэтому настройте его по мере необходимости.
Ура!