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

  • case LianLi

    case LianLi

    28 Mayıs 2010
  • Make:

    Make:

    23 Mart 2006
  • vgeller1

    vgeller1

    22 Kasım 2009