Преобразовать ключи массива в форматированные имена классов

Мне нужно взять этот массив и преобразовать только ключи в одну строку. Ищете эффективный способ сделать это.

  1. Каждый элемент имеет точку, добавленную перед именем ( .первый пост )
  2. Объединяется с другой строкой и пробелом перед каждым именем класса
    (.navigation .first_post)
  3. Запятая после имени (.navigation
    .первый пост, )
  4. Заменить «_» в «-« (.navigation .first-post,)

Предметы

array (
'first_post' => 'First Post'
'first_page' => 'First Page'
'prev_page' => 'Previous Page'
'next_page' => 'Next Page'
'last_page' => 'Last Page'
'last_post' => 'Last Post'
);

Это то, на что я надеюсь

.navigation .first-post, .navigation .first-page, .navigation .prev-post,
.navigation .next-page, .navigation .last-page, .navigation .last-post

1

Решение

array_map дает вам элегантный способ применения преобразования к каждому из элементов массива. После этого все, что вам нужно сделать, это implode Результат для объединения всех значений:

$arr = array (
'first_post' => 'First Post',
'first_page' => 'First Page',
'prev_page' => 'Previous Page',
'next_page' => 'Next Page',
'last_page' => 'Last Page',
'last_post' => 'Last Post'
);

function transform($x) {
return '.navigation .' . str_replace('_', '-', $x);
};

$result = implode(', ', array_map('transform', array_keys($arr)));
2

Другие решения

Попробуйте заменить / добавить ключ с новыми значениями

foreach($arr as $k=>$v){
$k = '.navigation .'.str_replace('_', '-', $k);
$newarr[$k] = $v;
}
print_r($newarr);

если вы хотите, чтобы ключи были разделены запятыми

$str = implode(", ", array_keys($newarr))
1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector