Nesne PHP dizi (şimdiye kadar anlarım gibi) dizeye dönüştürme

1 Cevap php

Ben bir web uygulaması için ön uç kod geliştirme ve özel bir nesne ile sorun garip bir parçası haline koştu ediyorum. Ben nesneyi talep ve print_r() I (nesne çok daha büyük, sadece ilgili kod onu kesmek) bu olsun kullandığınızda:

MemberInfo Object
(
    [meta_data] => Array
    (
        [email_recommendations] => true
        [email_updates] => false
    )
)

MemberInfo nesne bir şey değiştirmek için, ben sadece kendi özelliklerini güncellemek ve ikinci fonksiyonu ile arka uç geri gönderebilir. Yani örneğin, sayfa sonra sayfanın ikinci bir yük değişiklikleri ile bir POST isteği göndermek, (bize yukarıda gösterilen nesneyi verir) bir kez yüklenir. İkinci yükleme sırasında, yukarıda nesne, $memberInfo->meta_data['email_recommendations'] = 'false'; gibi bir şey ile farklı POST dayalı bir alan ayarlayın ve ardından bir şeydir güncelleme fonksiyonunu (çalıştırdıktan sonra sayfayı doldurmak için nesnenin bu sürümü kullanmaya getir gibi updateMember($memberInfo);). Ben nesne özelliği değerini değiştirdik Ancak, bir kez print_r() bana farklı bir şey gösteriyor:

MemberInfo Object
(
    [meta_data] => {\"email_recommendations\":\"false\",\"email_updates\":\"false\"}

)

Ben çok aptal bir şey bakan eminim; Herkes arıyor gerektiğini ne iyi bir fikir var mı? Ben kontrol ve arka uç kodu (işlev çağrısı updateMember(MemberInfo $memberInfo); olan) referans olarak geçiyor değil ama ben bu yüzden yanlış gidiyor ne olabilir emin değilim benim PHP 5 nesne taşıma biraz sarsıldım .

Ben derinlemesine hata ayıklama beklemeyin; Ben sadece tüm hakları tarafından bir dizi olmalıdır bir özellik bu değişikliği neden ne arıyor gerektiğini genel yönünü bilmek gerekir.

Şimdiden teşekkürler!

1 Cevap

böylece çağrıldıktan sonra nesnesini kullanıyorsanız updateMember()? PHP5 nesneler varsayılan referans olarak geçirilir, böylece json_encode() meta_data mülkiyet üzerinde görüşme yapıyorsanız, size tarif davranışı gösteren edeceğiz.

onaylamak için updateMember() fonksiyonunu göndermek isteyebilirsiniz, ama bu ne oluyor gibi geliyor.

yani:

class MemberInfo {
    function __construct()  {
        $this->meta_data = array(
            'email_recommendations' => true,
            'email_updates' => false,
        );
    } 
}

function updateMember($meminfo) {
    $meminfo->meta_data = json_encode($meminfo->meta_data);
    // do stuff
}

$meminfo = new MemberInfo();

updateMember($meminfo);

print_r($meminfo); // you'll see the json encoded value for "meta_data"