2011-12-08 8 views
8

すべての要素をラップするが、私はラインのロットまたはforeachループ配列要素Iのようなもので、配列のすべての要素をラップしたい

$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> 
+1

、カノニカルと賢明なアプローチを除外した、あなたは他に何をしようとしたのですか? –

+0

よく私はforeachループと快適です私はそれが可能かどうかを見たいだけです。 – Val

+0

'foreach'ループがないのはなぜですか?ああ、あなたは私が投稿したときにちょうど答えました! – Ryan

答えて

23

方法についてarray_mapをしたくないですか? 、再び(

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

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

Demoは、あなたがこのような何かをする必要がありますので、あなたは、ラムダ関数を使用することはできません、PHP> 5.3なし

(ソースをクリックします)

+0

構文エラー、予期しないT_FUNCTION、 ')'が183行目にあるとエラーが出ますが、それはクールです:) – Val

+0

PHP 5.3.0を実行してはいけません:) - 簡単な修正です私の答えを更新します – nickb

+2

または 'create_function' –

7

試してみてください)ソース]をクリックしますjoin('\n', array_map(function($a) { return "<a href=\"#$a\",>$a<\\a>";}, $links));

+2

...または名前付き関数 "implode"を使用する代わりに、 "join"というエイリアスを使用していて、簡単に判読可能な形で回答を書式化していないか、提案の制限事項について説明しています5≧5.3)。 Implodeは、自己文書化に関してははるかに暗黙的です。 – SEoF

+0

私はこの答えが二重引用符の代わりにシングルを使用し、スラッシュの代わりにバックスラッシュを使用すると正しくないと思います。 'join(" \ n "、array_map(function($ a){return" $a " ;}、$ links)); ' – superUntitled

0

1行のソリューションがあります:

trim(json_encode(array_values($array)) , '[]'); 

出力は次のようになります。だから、

"one","two","three" 
関連する問題