2011-12-08 9 views
8

tüm unsurları sarın ama bir çizgilerin çok veya foreach döngüsüdizi öğesi gibi bir şey ile bir dizinin tüm elemanları kaydırmak istiyoruz

$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

, başka ne denedin mi? –

+0

ben de foreach döngüsünden memnunum Sadece mümkün olup olmadığını görmek istiyorum. – Val

+0

Neden "foreach" döngü yapmıyor? Oh, gönderdiğim gibi cevapladın! – Ryan

cevap

23

ne dersiniz array_map istemiyor musunuz? , Yine (

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 böyle bir şey gerekir böylece, bir lambda fonksiyonu kullanamazsınız, PHP> 5.3 olmadan

(kaynağını tıklayın)

+0

Ayrıştırma hatası: sözdizimi hatası, beklenmedik T_FUNCTION, bekliyor ')' on line 183, bir hata veriyor ama bu harika bir şey :) – Val

+0

PHP 5.3.0 çalıştırıyor olmamanız gerekir :) - Bu kolay bir düzeltme, bir sn cevabımı güncelleyeceğim – nickb

+2

Veya 'create_function' –

7

deneyin) Kaynak tıklayın join('\n', array_map(function($a) { return "<a href=\"#$a\",>$a<\\a>";}, $links));

+2

... ya da "implode" isimlendirilmiş işlevini kullanmak yerine, "join" takma adını kullanmış ve yanıtı kolayca okunabilir şekilde biçimlendirmemiş ya da önerinin sınırlamalarına ilişkin bir açıklama sağlamamıştır (PHP 5> = 5.3). Kendini belgeleme söz konusu olduğunda, parçalanma çok daha gizlidir. – SEoF

+0

Bu cevabın çok doğru olmadığını, tek tırnak yerine tek tırnak ve eğik çizgi yerine ters eğik çizgi kullanıldığını düşünüyorum: 'join ("\ n", array_map (işlev ($ a) {return "$a" ;}, $ links)); ' – superUntitled

0

tek satırlık çözüm var:

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

Çıktı gibi görünecektir: kanonik ve hassas yaklaşımları ekarte ettikten Yani

"one","two","three" 
İlgili konular