मुझे लगता है कि मैं यहाँ वास्तव में कुछ स्पष्ट याद कर रहा हूँ, लेकिन क्यों मैं उत्पादन मैं कर रहा हूँ और न उत्पादन मैं निम्नलिखित वर पर उम्मीद हो रही है किसी ने मुझे समझा सकता उदासीनता:का पता लगाने के SimpleXML सरणी संपत्ति
यहाँ मूल xml:
<result>
<category>
<id>3</id>
<name>Category 1</name>
<subcategory>
<id>9</id>
<name>SubCat 1</name>
</subcategory>
<subcategory>
<id>10</id>
<name>SubCat 2</name>
</subcategory>
<subcategory>
<id>11</id>
<name>SubCat 3</name>
</subcategory>
</category>
</result>
मैं क्या कर रहा हूँ:
$xml = new SimpleXMLElement($file);
foreach($xml->category as $node)
{
echo "dump 1:
";
var_dump($node);
echo "**********************************************
dump 2:
";
var_dump($node->subcategory);
die();
}
यह आउटपुट:
dump 1:
object(SimpleXMLElement)#130 (3) {
["id"]=>
string(1) "3"
["name"]=>
string(10) "Category 1"
["subcategory"]=>
array(3) {
[0]=>
object(SimpleXMLElement)#133 (2) {
["id"]=>
string(1) "9"
["name"]=>
string(8) "SubCat 1"
}
[1]=>
object(SimpleXMLElement)#135 (2) {
["id"]=>
string(2) "10"
["name"]=>
string(8) "SubCat 2"
}
[2]=>
object(SimpleXMLElement)#136 (2) {
["id"]=>
string(2) "11"
["name"]=>
string(8) "SubCat 3"
}
}
}
**********************************************
dump 2:
object(SimpleXMLElement)#138 (2) {
["id"]=>
string(1) "9"
["name"]=>
string(8) "SubCat 1"
}
पहले वर डंप आउटपुट मैं क्या उम्मीद थी, लेकिन उत्पादन मैं दूसरे var_dump के लिए उम्मीद करेंगे होगा:
array(3) {
[0]=>
object(SimpleXMLElement)#133 (2) {
["id"]=>
string(1) "9"
["name"]=>
string(8) "SubCat 1"
}
[1]=>
object(SimpleXMLElement)#135 (2) {
["id"]=>
string(2) "10"
["name"]=>
string(8) "SubCat 2"
}
[2]=>
object(SimpleXMLElement)#136 (2) {
["id"]=>
string(2) "11"
["name"]=>
string(8) "SubCat 3"
}
}
या यहां तक कि एक वस्तु सभी सरणी आइटम वाले। यह मामला क्यों नहीं है?
मैं देख सकता हूँ जब मैं var_dump($node->subcategory)
फोन यह पहली बार 'उपश्रेणी' नोड है कि यह पाता है डंपिंग है, लेकिन क्यों तो यह पहला वर डंप के लिए एक सरणी के लिए सभी 'उपश्रेणी' नोड्स डाली है, लेकिन दूसरे के लिए नहीं? और इस व्यवहार की नकल करने के लिए मैं इस व्यवहार की नकल कैसे करूं कि 'उपश्रेणी' में एक से अधिक ऑब्जेक्ट हैं (जैसा कि यह पहले var डंप में होता है)?
मूल रूप से मैं क्या पता लगाने है अगर SimpleXMLElement की संपत्ति अधिक मूल्यों की एक सरणी शामिल करने के लिए कोशिश कर रहा हूँ
मैं हर तरह की कोशिश की है (यानी अगर यह बच्चे नोड्स शामिल हैं), लेकिन मैं नहीं कर सकता ऐसा लगता है कि सरल एक्सएमएल ऑब्जेक्ट के गुणों में से एक में सरणी का एक सेट होता है।
अद्यतन:
if(count($node->subcategory)>1)
{
// we have more than one subcategory
}
लेकिन यह सबसे खूबसूरत तरीका नहीं है, मुझे यकीन है कि वहाँ एक क्लीनर विधि होना चाहिए हूँ:
मैं इस काम करता है पाया?
इस पोस्ट का जवाब हो सकता है आपकी मदद करें: http://stackoverflow.com/questions/2751711/php-get-values-from-simplexmlelement-array?rq = 1 ** var_dump ($ node ["subcategoy"]); ** – feskr
@feskr धन्यवाद, मैं अपने वास्तविक कोड में फ़ोरैच लूप के माध्यम से सभी गुणों (और इसलिए विशेषताएँ) को दबा रहा हूं और ऐसा प्रतीत नहीं होता है गुणों और गुणों के बीच अंतर करने के लिए, जो एक समस्या है! – Stu
@feskr 'var_dump ($ node [" subcategory "]) 'outputs:' NULL' – Stu