2016-03-23 18 views
1

PHP'yi kullanarak print_r kullanarak bir dizi ($ sonuç) yazdırdım. Ama dizinin döndüğü biçim benim için yeni bir tane. Özellikle, bu özel biçimde birden fazla değeriyle birlikte bulunduğunda "reviews_review" ("Wow, ne harika ...") alanında bulunan metni nasıl alabilirim? Örnek:stdClass'ten yazdırma değeri Kıvrımlı parantez içeren nesne/dizi

stdClass Object 
(
[node_reviews_nid] => 5270 
[reviews_review] => a:2:{s:5:"value";s:38:"Wow, what a great place. The bestest!";s:6:"format";s:13:"filtered_html";} 

olanlar ekstra değerler ve kıvırcık parantez bana stumped var. Gördüğünüz garip kıvırcık parantez PHP'nin serialize işlevinin sonucudur,

a:2:{s:5:"value";s:38:"Wow, what a great place. The bestest!";s:6:"format";s:13:"filtered_html";}) 

cevap

2

ama sadece yani çok fazla alır reviews_review almak için o yapıyor - Ben node_reviews_nid isteseydim ben sadece $ result-> node_reviews_nid" kullanabilirsiniz Temel olarak, nesneler, iç içe geçmiş diziler gibi karmaşık yapıları, örneğin HTTP üzerinden aktarımı daha kolay ve daha basit olan basit dizelere dönüştürmeyi amaçlar. JSON gösterimi olarak düşünün, ancak PHP'ye özel (yapın, json_decode() seri hale getirilmiş bir değer girmeye çalışmaz.

Ayrıca dikkat edilmesi gereken, serialize -d dizesinin azami uzunluğa sahip olması, bunun ötesinde basitçe kesilmiş halidir, bu yüzden çok büyük yapılar için kullanmaktan kaçının - veri kaybedersiniz.

Bunun tersi unserialize dur. Bu nedenle, incelemenin metnini okumak için önce "reviews_review" özelliğini sınıflandırmak zorunda kalmazsınız, daha sonra elde edilen dizinin "value" dizinine başvurmanız gerekir. reviews_review yılında

$review_data = unserialize($result->reviews_review); 
$review_text = $review_data['value']; 
print($review_text); 
+1

A-ha kullanmadan önce bu unserialize() kullanarak unserialize gerekir yani serialize() fonksiyonunu

kullanılarak yazılmış bir tefrika dizi gibi görünüyor! Bunun için çok teşekkürler. Mükemmel. Bunu nasıl başaracağımı anlatan bir zamana sahibim - çünkü hangi arama terimlerinin bittiğini anlamak biraz zordu! Büyük cevapları çevirmek için hem siz hem de RiggsFolly'a teşekkürler (bir dakikaya göre ayrılmış - bu hizmet!) Tekrar teşekkürler - K – tvsmvp

1

veriler Yani bunu

$review = unserialize($obj->reviews_review); 
print_r($review); 
İlgili konular