数组元素包装所有元素

时间:2011-12-08 13:56:48

标签: php arrays

我想用类似的东西包装数组的所有元素但我不想要很多行或foreach循环

$links = array('london','new york','paris');

// the outcome should be 

<a href="#london">london</a>
<a href="#new york">new york</a>
<a href="#paris">paris</a>

3 个答案:

答案 0 :(得分:25)

array_map怎么样?

$links   = array('london', 'new york', 'paris');
$wrapped = array_map(
   function ($el) {
      return "<a href=\"#{$el}\">{$el}</a>";
   },
   $links
);

Demo(点击来源)

没有PHP&gt; 5.3,你不能使用lambda函数,所以你需要这样的东西:

function wrap_those_links($el)  { 
      return "<a href=\"#{$el}\">{$el}</a>"; 
}

$links   = array('london', 'new york', 'paris');
$wrapped = array_map('wrap_those_links', $links);

Demo for PHP 5.2(再次点击“来源”)

答案 1 :(得分:7)

尝试join('\n', array_map(function($a) { return "<a href=\"#$a\",>$a<\\a>";}, $links));

答案 2 :(得分:0)

可重复使用的功能。

function array_wrap_template($array, $template, $rep="{{el}}")
{
    return array_map(function($el)use($template, $rep){
        return str_replace($rep, $el, $template);
    }, array_values($array));
}

$links = array('london','new york','paris');
$wrapped = array_wrap_template($links, "<a href=\"#{{el}}\">{{el}}</a>");