我想用类似的东西包装数组的所有元素但我不想要很多行或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>
答案 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>");