كيفية الوصول إلى قيمة من داخل كائن متعدد الأبعاد في بي

StackOverflow https://stackoverflow.com/questions/1810696

  •  05-07-2019
  •  | 
  •  

سؤال

وهنا هو شريحة من الصفيف في السؤال التالي:

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

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

والآن أريد أن الوصول إلى قيم "Ptype" و "الأسعار".

'الأسعار' هي سهلة $a = (float) $price_a['Pricing'][0]->Price;

ولكن أنا لا يمكن معرفة "Ptype" لقد حاولت كل شيء و$price_a['Pricing'][0]->{@attributes} الأقرب حصلت

والذي النواتج:

    SimpleXMLElement Object
(
)

وأنا واثق من أن هذا له حل بسيط وأنا في عداد المفقودين من ذلك هو موضع تقدير أي مساعدة. شكرا لك!

هل كانت مفيدة؟

المحلول

$ptype = $price_a['Pricing'][0]->attributes()->Ptype;

نصائح أخرى

وأليس:

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

وrazass، لديك على الاطلاق لتغيير الطريقة التي ترى SimpleXML. نسيان الأشياء والمصفوفات. هل <م> لا دراسة SimpleXMLElement مع var_dump() أو سوف تظل الخلط. يجب عليك بالتأكيد <م> لا لديك لوضع العقد في صفائف للوصول إليها، فإنه لا معنى له.

في SimpleXML، يمكنك الوصول إلى العقد باستخدام -> (مثل الملكية الكائن) والصفات كما لو كانت مؤشرات مجموعة. على سبيل المثال

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

وبدلا من نشر إخراج var_dump()، إضافة XML المصدر. على سبيل المثال، مع تخمين في XML الفعلي، فإن رمز يكون شيء من هذا القبيل

$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'];

إذا التعليمات البرمجية أي أكثر تعقيدا من ذلك، وكنت أفعل ذلك الخطأ وكنت طالبا فقط عن المتاعب. تذكر أنه دعا <م> بسيط XML.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top