Php çok boyutlu nesnenin içinde değere erişmek için nasıl

2 Cevap php

Burada söz konusu dizinin bir dilim:

Array
(
    [Pricing] => Array
        (
            [0] => SimpleXMLElement Object
                (
                    [@attributes] => Array
                        (
                            [MType] => A
                            [PType] => JBN
                        )

                    [PSNumber] => 19753
                [CCode] => USD
                [EDate] => 2008-12-19
                [Price] => 218.23
            )

Şimdi 'Ptype' ve 'Fiyat' değerlerini erişmek istiyorum.

'Fiyat' kolaydır $a = (float) $price_a['Pricing'][0]->Price;

Ama 'Ptype' Ben her şeyi denedim ve aldım yakın oldu $price_a['Pricing'][0]->{@attributes} bilemiyorum

hangi çıkışları:

    SimpleXMLElement Object
(
)

Ben bu basit bir çözümü var eminim ve ben bu yüzden herhangi bir yardım takdir özlüyorum. Teşekkür ederiz!

2 Cevap

Değil mi:

$price_a['Pricing'][0]->attributes()->PType

razass, kesinlikle ne SimpleXML görmek biçimini değiştirmek zorunda. Nesneler ve diziler unutun. not var_dump() ile SimpleXMLElement incelemek mı yoksa karışık kalacaktır. Kesinlikle not onlara erişmek için dizilerde düğümleri koymak zorundadır, bu mantıklı değil.

SimpleXMLElement, onlar indekslerin sanki -> (bir nesnenin özelliği gibi) ve nitelikleri kullanarak düğümlerin erişin. Örneğin

$xml->node;
$xml['attribute'];

Yerine çıkışını gönderme var_dump(), kaynak XML yayınlayın. Örneğin, gerçek XML bir tahmin alarak, kod gibi bir şey olurdu

$Pricings = simplexml_load_string(
    '<Pricings>
        <Pricing MType="A" PType="JBN">
            <PSNumber>19753</PSNumber>
            <CCode>USD</CCode>
            <EDate>2008-12-19</EDate>
            <Price>218.23</Price>
        </Pricing>
        <Pricing MType="B" PType="XYZ">
            <PSNumber>12345</PSNumber>
            <CCode>USD</CCode>
            <EDate>2008-12-19</EDate>
            <Price>218.23</Price>
        </Pricing>
    </Pricings>'
);

// value of the first node's @PType
$Pricings->Pricing[0]['Ptype'];

// value of the first node's Price
$Pricings->Pricing[0]->Price;

// value of the second node's @PType
$Pricings->Pricing[1]['Ptype'];

Lütfen kodu herhangi daha karmaşık ise, yanlış yapıyoruz ve sadece sorun için soruyorsun. O Simple XML denir unutmayın.