我想把数组的所有元素都用类似的东西 Package 起来,但我不想有很多行或foreach循环
$links = array('london','new york','paris');
结果应该是
<a href="#london">london</a> <a href="#new york">new york</a> <a href="#paris">paris</a>
jgzswidk1#
array_map怎么样?
$links = array('london', 'new york', 'paris'); $wrapped = array_map( function ($el) { return "<a href=\"#{$el}\">{$el}</a>"; }, $links );
Demo(单击源代码)没有PHP > 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(再次单击源)
pinkon5k2#
试试join('\n', array_map(function($a) { return "<a href=\"#$a\",>$a<\\a>";}, $links));
join('\n', array_map(function($a) { return "<a href=\"#$a\",>$a<\\a>";}, $links));
neekobn83#
在现代PHP版本中,它可以缩短如下。
$wrapper = static fn (string $link): string => \sprintf('<a href="#%1$s">%1$s</a>', $link); $result = \array_map($wrapper, $links);
llew8vvj4#
可重复使用的功能。
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>");
wfveoks05#
另一个尚未提到的技术是使用preg_replace()--它将很好地迭代字符串数组--尽管,显然这不是一个实际需要正则表达式模式的任务。(Demo)
preg_replace()
$links = array('london','new york','paris'); var_export( preg_replace('/.+/', '<a href="#$0">$0</a>', $links) );
否则,您可以通过对城市字符串(用作href值)调用urlencode()来进一步生成编码的url。
href
urlencode()
var_export( array_map( fn($city) => sprintf('<a href="#%s">%s</a>', urlencode($city), $city), $links ) );
5条答案
按热度按时间jgzswidk1#
array_map怎么样?
Demo(单击源代码)
没有PHP > 5.3,你就不能使用lambda函数,所以你需要这样的东西:
Demo for PHP 5.2(再次单击源)
pinkon5k2#
试试
join('\n', array_map(function($a) { return "<a href=\"#$a\",>$a<\\a>";}, $links));
neekobn83#
在现代PHP版本中,它可以缩短如下。
llew8vvj4#
可重复使用的功能。
wfveoks05#
另一个尚未提到的技术是使用
preg_replace()
--它将很好地迭代字符串数组--尽管,显然这不是一个实际需要正则表达式模式的任务。(Demo)否则,您可以通过对城市字符串(用作
href
值)调用urlencode()
来进一步生成编码的url。