كيفية الوصول إلى قيمة من داخل كائن متعدد الأبعاد في بي
سؤال
وهنا هو شريحة من الصفيف في السؤال التالي:
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.