পিএইচপি পিছু পিছু সমস্ত বৈশিষ্ট্যের মধ্যে লুপিং


88

কীভাবে আমি বস্তুর সমস্ত বৈশিষ্ট্য লুপ করব? অবজেক্টের প্রতিটি সম্পত্তি মুদ্রণের জন্য এখনই আমাকে একটি নতুন কোড লাইন লিখতে হবে

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

আমি কি ফোরচ লুপ বা কোনও লুপ ব্যবহার করে কোনও সামগ্রীর সমস্ত বৈশিষ্ট্য লুপ করতে পারি?

এটার মতো কিছু

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

4
foreachআপনি ঠিক করছেন এমন লুপ নিয়ে মাথা
শক্তি সিং

6
অবজেক্টের সর্বজনীন বৈশিষ্ট্যগুলির মাধ্যমে পুনরাবৃত্তি করতে একটি foreach( =>না সহ ->) ব্যবহার করুন । আপনি যদি অন্য আচরণ চান তবে আপনি আপনার শ্রেণিকে ট্র্যাভারেবলও করতে পারেন।
নেটকোডার

@ নেটকোডার: ধন্যবাদ তবে এটি কেবল টাইপো ছিল
ডারিক

4
যেমন নেটকোডার বলেছেন: কেবলমাত্র সর্বজনীন সম্পত্তিগুলি অ্যাক্সেসযোগ্য হবে
আন্দ্রেয়াস

উত্তর:


146

যদি এটি কেবলমাত্র ডিবাগিং আউটপুট জন্য হয় তবে আপনি সমস্ত প্রকার এবং মানগুলিও দেখতে নীচেরটি ব্যবহার করতে পারেন।

var_dump($obj);

আপনি যদি আউটপুটটির উপর আরও নিয়ন্ত্রণ চান তবে আপনি এটি ব্যবহার করতে পারেন:

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

10
"ক্লাস স্টাডক্লাসের অবজেক্টটি স্ট্রিংয়ে রূপান্তরিত করা যায়নি" ফলস্বরূপ ত্রুটি হতে পারে যদি বস্তুটি অ্যারে না থাকে।
অবতরণ করেছে

মুদ্রণ_আর ($ اعتراض); সাহায্য করতে পারে। মুদ্রণ প্রদত্ত বস্তুর ক্ষেত্রগুলি পুনরাবৃত্তভাবে দেওয়া হয়।
fandasson

9

পরীক্ষার উদ্দেশ্যে আমি নিম্নলিখিতটি ব্যবহার করি:

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

2

কখনও কখনও, আপনাকে কোনও বস্তুর ভেরিয়েবল তালিকাবদ্ধ করতে হবে এবং ডিবাগিংয়ের উদ্দেশ্যে নয়। এটি করার সঠিক উপায় হ'ল get_object_vars ($ অবজেক্ট) ব্যবহার করা। এটি এমন একটি অ্যারে প্রদান করে যাতে সমস্ত শ্রেণীর ভেরিয়েবল এবং তাদের মান থাকে। আপনি তারপরে একটি অগ্রণী লুপে লুপ করতে পারেন। যদি অবজেক্টের মধ্যেই ব্যবহার করা হয় তবে কেবল get_object_vars ($ এটি) করুন


1

এখানে বস্তুর সম্পত্তি প্রকাশ করার অন্য উপায়।

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

4
এটি কেবল তখনই কাজ করে যদি অবজেক্টটি প্রয়োগ করে \ArrayAccessবা এটি হয় array, অন্যথায় নিম্নলিখিতটি ছুঁড়ে দেওয়া হয়:FATAL ERROR Uncaught Error: Cannot use object of type SomeType as array
নুডলঅফডিথ

0

পূর্বাঞ্চ লুপের মাধ্যমে $ অবজেক্টটি চালানোর আগে আপনাকে এটিকে অ্যারেতে রূপান্তর করতে হবে:

$array = (array) $object;  

 foreach($array as $key=>$val){
      echo "$key: $val";
      echo "<br>";
 }
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.