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

  • 07cadikiz07

    07cadikiz07

    17 EKİM 2007
  • ImBluecams

    ImBluecams

    25 Kasım 2012
  • VideoGamePervert

    VideoGamePer

    30 AĞUSTOS 2008