将数组键转换为格式化的 class 名称

Convert array keys to formatted class names

我需要获取此数组并将仅 keys 转换为一个字符串。寻找一种有效的方法来做到这一点。

  1. 每个元素在名称前添加句点 ( .first_post )
  2. 在每个 class 名称之前与另一个字符串和 space 连接 (.导航.first_post)
  3. 名称后的逗号 ( .navigation .first_post, )
  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

尝试 replace/add 具有新值的键

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

如果你想要键作为逗号分隔的字符串

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

array_map gives you an elegant way of applying a transformation to each of an array's elements. After doing that, all you need to do is 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)));