SORU
3 Aralık 2010, Cuma


PHP nesne ilişkisel dizi dönüştürmek

Benim kod yazılı ise veri nesneleri saklanan ile çalışan web sitem için bir API dizileri kullanarak birleştiriyorum.

Bir dizi için bir nesne dönüştürmek için hızlı ve kirli bir işlevi istiyorum.

CEVAP
3 Aralık 2010, Cuma


Sadece typecast

$array =  (array) $yourObject;

http://www.php.net/manual/en/language.types.array.php

Eğer bir nesne bir dizi dönüştürülür, sonuç nesnenin özellikleri olan bir dizidir. Anahtarlar üye değişken adları, birkaç önemli istisnalar: tamsayı özellikleri erişilemez; özel değişkenler sınıf adı için ayrı birer değişken adı; korumalı değişken bir '*' e değişken adı. Bu e değerleri her iki tarafında boş bayt.

Örnek: Basit Nesne

$object = new StdClass;
$object->foo = 1;
$object->bar = 2;

var_dump( (array) $object );

Çıkış:

array(2) {
  'foo' => int(1)
  'bar' => int(2)
} 

Örnek: Karmaşık Nesne

class Foo
{
    private $foo;
    protected $bar;
    public $baz;

    public function __construct()
    {
        $this->foo = 1;
        $this->bar = 2;
        $this->baz = new StdClass;
    }
}

var_dump( (array) new Foo );

Çıkış \0s açıklık getirmek için düzenlenmiş olan ():

array(3) {
  '\0Foo\0foo' => int(1)
  '\0*\0bar' => int(2)
  'baz' => class stdClass#2 (0) {}
}

var_dump yerine var_export çıkış:

array (
  '' . "\0" . 'Foo' . "\0" . 'foo' => 1,
  '' . "\0" . '*' . "\0" . 'bar' => 2,
  'baz' => 
  stdClass::__set_state(array(
  )),
)

Bu şekilde aynı türde roller vermeyi nesne grafiği derin döküm ve boş bayt manuel teklif olarak açıklandığı gibi) halka açık olmayan diğer öznitelikleri erişmek için uygulamak gerekir. Bu, yalnızca ortak özellikleri ile StdClass nesne veya nesneleri döküm zaman en iyi şekilde çalışır. Hızlı ve kirli istediğin için sorun yok.

Ayrıca Bkz derinlemesine bu blog yazısı:

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • finalcall07

    finalcall07

    11 NİSAN 2008
  • Tube Time

    Tube Time

    14 Mayıs 2013
  • wowchick16

    wowchick16

    17 Mart 2007