PHP standart çok-boyutlu dizi çok boyutlu, çok-nesne dizisi dönüştürmek

2 Cevap php

Ben bir simplexml_import_dom() işlevi çağrısından çok boyutlu multi-nesne dizi var.

Dizinin bir bölümünün bir dilim:

[Price] => SimpleXMLElement Object
(
    [Prices] => Array
        (
            [0] => SimpleXMLElement Object
                (
                    [@attributes] => Array
                        (
                            [MType] => A
                            [PType] => R

İç içe nesneleri okumaya çalışırken, bu bana sorunların yeraldığını neden oluyor. Ben birden get_object_vars() kullanarak diziye döngü denedim ama derinlik ve iç içe nesnelerin konumu sürekli değişiyor çünkü istenen sonuçları elde etmek mümkün olmamıştır.

PHP bir standart çok-boyutlu dizi çok boyutlu, çok-nesne dizisi dönüştürmek için bulmak mümkün değil, bir işlevi var mı? Ya da herkes önce bu sorunu çözmüştür?

Yardımlarınız için teşekkürler!

2 Cevap

Soru sık sık sorulur, ama bir tek beden herkese uyar yöntemle mümkün kılan bir dizi, bir XML ağacı dönüştürürken bir vaka-by-case bazında ele alınması gereken temel bir sorun var: nasıl ayırt edersiniz niteliklerimde düğümleri?

Örneğin, nasıl bir diziye bu XML dönüştürmek istiyorsunuz:

<node val="attr"><val>child</val></node>

Ayrıca, bir düğüm bir ilişkisel dizi ile taklit edilemeyen, aynı adı taşıyan çocukların herhangi bir sayı olabilir.

Uzun lafın kısası, kendi çözüm uydurmak gerekir. Çıktınız bakılırsa, bu gibi bir şey olacaktır:

$arr = array();
foreach ($Price->Prices as $Prices)
{
    $tmp = array();

    foreach ($Prices->attributes() as $k => $v)
    {
        $tmp[$k] = (string) $v;
    }

    $arr[] = $tmp;
}

Size aradığınızı değil ise, soruyu düzenlemek ve kaynak belgenin (XML) yanı sıra beklenen sonuç bir örnek ekleyin lütfen (dizi.)

Eğer bu nesneleri kullanabilirsiniz functions o var farkında mısınız? Aşağıdaki deneyin:

foreach ($simpleXmlObject->children() as $element) {
    echo $element->getName();
}