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

时间:2016-06-15 05:11:32

标签: php arrays replace concat

我需要使用此数组并仅将转换为一个字符串。寻找一种有效的方法来实现这一目标。

  1. 在名称(。first_post)
  2. 之前添加了句点的每个元素
  3. 在每个类名之前与另一个字符串和空格连接     (.navigation .first_post)
  4. 名称后面的逗号(.navigation     .first_post,)
  5. “_”替换为“ - ” (.navigation .first-post,)
  6. 产品

    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
    

2 个答案:

答案 0 :(得分:2)

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)));

答案 1 :(得分:1)

尝试使用新值替换/添加键

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

如果您想将密钥作为逗号分隔的字符串

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