আমি কীভাবে পিএইচপি-তে ভেরিয়েবল হিসাবে নামক কোনও বস্তুর সম্পত্তি অ্যাক্সেস করতে পারি?


105

জেএসনে এনকোড করা একটি গুগল এপিআইগুলি এর মতো কোনও বস্তু ফেরত দিয়েছে

[updated] => stdClass Object
(
 [$t] => 2010-08-18T19:17:42.026Z
)

যে কেউ জানেন যে আমি কীভাবে $tমানটি অ্যাক্সেস করতে পারি ?

$object->$t স্পষ্টতই ফিরে আসে

বিজ্ঞপ্তি: অপরিজ্ঞাত পরিবর্তনশীল: tইন / ইউএসআর / স্থানীয় / ...

মারাত্মক ত্রুটি: / .... এ খালি সম্পত্তি অ্যাক্সেস করতে পারে না

উত্তর:


224

যেহেতু আপনার সম্পত্তির নামটি স্ট্রিং '$t', আপনি এটির মাধ্যমে এটি অ্যাক্সেস করতে পারেন:

echo $object->{'$t'};

বিকল্পভাবে, আপনি সম্পত্তিটির নাম একটি পরিবর্তনশীলতে রাখতে পারেন এবং এটি এটির মতো ব্যবহার করতে পারেন:

$property_name = '$t';
echo $object->$property_name;

আপনি এই দুটিই repl.it- এ কর্মে দেখতে পাবেন: https://repl.it/@jrunning/SpiritedTroubledWorkspace


4
কী যদি কেবল "প্রতিধ্বনি $ অবজেক্ট -> $ সম্পত্তি_নাম" উদ্ধৃতি ব্যতীত ব্যবহৃত হয়। কাজ করছে বলে মনে হচ্ছে, তবে এটি কি কেবল নতুন পিএইচপি সংস্করণগুলির জন্য?
ইয়াসেন

4
@ ল্যারি ওপি'র ক্ষেত্রে উক্তিগুলি প্রয়োজনীয় কারণ $t এটি সম্পত্তির নাম, সম্পত্তির নাম সম্বলিত কোনও পরিবর্তনশীল নয় ।
জর্ডান

4
চার বছর পরে আমি বুঝতে পেরেছি যে আমি @ লেমির মন্তব্যটি ভুল লিখেছি। আপনি ঠিক বলেছেন, লেমি। তাহলে এর মান $property_nameস্ট্রিং '$t'তারপর echo $object->$property_nameকাজ করে জরিমানা। আমি আমার উত্তর আপডেট করেছি। ধন্যবাদ এবং দুঃখিত!
জর্দান

হ্যালো. আমি এই উত্তরটি কেবলমাত্র ডাবল উদ্ধৃতি, @ জর্দান রানিং - সহ ব্যবহার করতে পারি - আপনি কি নিশ্চিত যে এটি একক উদ্ধৃতিতে ঠিক আছে?
ভালটার এখলম

এটি কেবল উদ্ধৃতি ছাড়াই কাজ করে আমি পিএইচপি 7 ব্যবহার করছি
স্টিভ মোর্টজ


15

সঠিক উত্তর (পিএইচপি 7 এর জন্যও):

$obj->{$field}

পরিবর্তনশীল যদি সম্পত্তির নামের অংশ হয়? $obj->{"$field".'_id'}উদাহরণস্বরূপ কিছু করার উপায় আছে ?
টুইস্টপিক্সেল

সবেমাত্র আবিষ্কার হয়েছে এটি দিয়ে একেবারে সম্ভব $obj->{"{$field}".'id'}। এটি ভয়ঙ্কর দেখাচ্ছে তবে এটি 100% কাজ করে।
মোড়ক পিক্সেল

5

আমি পিএইচপি 7 ব্যবহার করছি এবং নীচের কাজগুলি আমার জন্য ভাল:

class User {
    public $name = 'john';
}
$u = new User();

$attr = 'name';
print $u->$attr;

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.