2010-01-25 15 views
59

Ben nesnelerle bir dizi varsa:PHP'de dizi öğelerini dizelere nasıl dökersiniz?

$a = array($objA, $objB); 

(her nesne bir __toString() kullanılan yöntem vardır) o dizi $a artık nesneleri ama onların dize içerecek şekilde can ı dizesine Tüm dizi öğelerini dökme nasıl

temsilidir? Tek liner var mı yoksa dizi boyunca manüel olarak döngü yapmak zorunda mıyım?

+0

sen http://php.net/array_map baktım Enjoy ... gibi array_map ile olsa diziye şey başvurabilirim? – Kemo

+0

see - http://stackoverflow.com/questions/12682232/converting-array-values-to-string/42998701#42998701 –

+0

@RohitSuthar: Bağlantılı cevabınız dizgeden bir dizi oluşturur. Bu soru, bir dizi nesnenin dize temsilinin bir dizisine dönüştürülmesiydi. – acme

cevap

118

Tek astar:

$a = array_map('strval', $a); 
// strval is a callback function 

bakınız PHP DOKÜMANLAR:

array_map

strval

tadını çıkarın! ;)

+1

Lanet olsun, cevabımı göndermeden önce bunu bilmemi isterdim. +1 –

+1

implode (',', array_map ('strval', $ a)); prolly – Kemo

+1

@Kemo iş yapacağını: Bence bunu istediğini sanmıyorum. –

2

Eğer implode arıyorsunuz?

$array = array('lastname', 'email', 'phone'); 

$comma_separated = implode(",", $array); 

echo $comma_separated; // lastname,email,phone 
+0

Hayır, çünkü dizim nesnelerden oluşuyor, dizeleri değil. Ve sonuç bir dizi olmalı ve yıpranmış bir dize olmamalıdır. – acme

0

Şu anda test edemez, ancak ne zaman implode() böyle bir dizi ne kontrol edebilir? _toString , çağrılmalıdır.

+0

Yapıyor. Basit 'implode ($ dizi)' yapar. – Gordon

+1

@Gordon: Tüm dizeleri bir arada birleştirecek olsa da, OP'nin "__toString()") oluşturulmuş dizeleri karşılık gelen dizi öğelerinde tutmasını istediğini düşünüyorum. –

+0

Doğru, dizinin hala bozulmamış olmasını ve sadece içindeki öğelerin diziye dökülmesini istiyorum. – acme

2

Test edilmedi, ancak böyle bir şey yapmak gerekir?

foreach($a as $key => $value) { 
    $new_arr[$key]=$value->__toString(); 
} 
$a=$new_arr; 
+0

soruyu okuyor, diyor "Tek liner var mı yoksa el ile döngü yapmalı mıyım?" :) – Kemo

+1

Evet, ve Alix'in yazdığı yorumda önerdiğim gibi, onun çözümünü önerdim. hakkında. –

+1

Bu neden olumsuz oy aldı? –

-4

Aşağıdakileri yapamayacağınız için herhangi bir neden var mı?

$a = array(
    (string) $objA, 
    (string) $objB, 
); 
+0

Evet, çünkü aslında dizide kaç tane eleman olduğunu bilmiyorum. Yukarıdaki örnek, daha net hale getirmek için iki öğeye düşmüştür. – acme

0

Alix Axel en güzel yanıta sahiptir. Ayrıca

//All your objects to string. 
$a = array_map(function($o){return (string)$o;}, $a); 
//All your objects to string with exclamation marks!!! 
$a = array_map(function($o){return (string)$o."!!!";}, $a); 

İlgili konular