ऑब्जेक्ट php के सभी गुणों के माध्यम से लूपिंग


84

मैं ऑब्जेक्ट के सभी गुणों के माध्यम से कैसे लूप कर सकता हूं? अभी मुझे ऑब्जेक्ट की प्रत्येक प्रॉपर्टी को प्रिंट करने के लिए एक नई कोड लाइन लिखनी है

echo $obj->name;
echo $obj->age;

क्या मैं फ़ॉरेस्ट लूप या किसी भी लूप का उपयोग करके किसी ऑब्जेक्ट के सभी गुणों को लूप कर सकता हूं?

कुछ इस तरह

foreach ($obj as $property => $value)  

1
foreachआप सही काम कर रहे लूप के साथ जाएं
शक्ति सिंह

6
ऑब्जेक्ट सार्वजनिक गुणों के माध्यम से पुनरावृति करने के लिए foreach( =>नहीं के साथ ->) का उपयोग करें । यदि आप एक और व्यवहार चाहते हैं तो आप अपनी कक्षा को ट्रैवर्सेबल भी बना सकते हैं ।
netcoder

@netcoder: धन्यवाद लेकिन यह केवल टाइपो था
दारिक

2
जैसा कि netcoder ने कहा: केवल सार्वजनिक गुण सुलभ होंगे
एंड्रियास

जवाबों:


139

यदि यह केवल डिबगिंग आउटपुट के लिए है, तो आप सभी प्रकार और मानों को देखने के लिए निम्नलिखित का उपयोग कर सकते हैं।

var_dump($obj);

यदि आप आउटपुट पर अधिक नियंत्रण चाहते हैं, तो आप इसका उपयोग कर सकते हैं:

foreach ($obj as $key => $value) {
    echo "$key => $value\n";
}

9
"क्लास स्टैडक्लास का ऑब्जेक्ट स्ट्रिंग में परिवर्तित नहीं किया जा सकता है" यदि ऑब्जेक्ट एक सरणी नहीं है, तो परिणामी त्रुटि हो सकती है।
उतरा

print_r ($ obj); भी मदद कर सकता है। प्रिंट्स ने ऑब्जेक्ट के फ़ील्ड को पुनरावर्ती रूप से दिया।
फ़ंडासन

8

परीक्षण प्रयोजनों के लिए मैं निम्नलिखित का उपयोग करता हूं:

//return assoc array when called from outside the class it will only contain public properties and values 
var_dump(get_object_vars($obj)); 

1

यहाँ वस्तु संपत्ति को व्यक्त करने का एक और तरीका है।

foreach ($obj as $key=>$value) {
    echo "$key => $obj[$key]\n";
}

2
यह केवल तभी काम करता है जब ऑब्जेक्ट लागू होता है \ArrayAccessया एक है array, अन्यथा निम्नलिखित को फेंक दिया जाता है:FATAL ERROR Uncaught Error: Cannot use object of type SomeType as array
NoodleOfDeath

1

कभी-कभी, आपको किसी ऑब्जेक्ट के चर को सूचीबद्ध करने की आवश्यकता होती है, न कि डिबगिंग उद्देश्यों के लिए। इसे करने का सही तरीका get_object_vars ($ ऑब्जेक्ट) का उपयोग करना है। यह एक सरणी देता है जिसमें सभी वर्ग चर और उनके मूल्य होते हैं। फिर आप उनके माध्यम से एक फॉरेस्ट लूप में लूप कर सकते हैं। यदि ऑब्जेक्ट के भीतर ही उपयोग किया जाता है, तो बस get_object_vars ($ यह) करें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.