मुझे पता है यह एक पुराने सवाल है, लेकिन दूसरों कि यह आ जाती के लाभ के लिए, मैं इस अपने आप को हाल ही में हल और परिणाम
<?php
//Just some setup
header('Content-Type: text/plain');
$account = (object) array(
'email' => 'foo',
'dob'=>((object)array(
'day'=>1,
'month'=>1,
'year'=>((object)array('century'=>1900,'decade'=>0))
))
);
var_dump($account);
echo "\n\n==============\n\n";
//The functions
function &getObjRef(&$obj,$prop) {
return $obj->{$prop};
}
function updateObjFromArray(&$obj,$array){
foreach ($array as $key=>$value) {
if(!is_array($value))
$obj->{$key} = $value;
else{
$ref = getObjRef($obj,$key);
updateObjFromArray($ref,$value);
}
}
}
//Test
updateObjFromArray($account,array(
'id' => '123',
'email' => '[email protected]',
'dob'=>array(
'day'=>19,
'month'=>11,
'year'=>array('century'=>1900,'decade'=>80)
)
));
var_dump($account);
साझा करने के लिए जाहिर है वहाँ कोई सुरक्षा उपायों में बनाया गया हैं चाहता था मुख्य चेतावनी यह है कि updateObjFromArray
फ़ंक्शन मानता है कि $array
के भीतर किसी भी नेस्टेड सरणी के लिए, $obj
में संबंधित कुंजी पहले से मौजूद है और यह एक वस्तु है, यह सत्य होना चाहिए या किसी ऑब्जेक्ट की तरह इसका इलाज करना एक त्रुटि फेंक देगा।
आशा है कि इससे मदद मिलती है! :)
आप इस तरह से कोड क्या कर रहे हैं, इस पर असर डालना क्यों चाहते हैं? भविष्य में किसी बिंदु पर (** शायद आप **) को इस कोड को पढ़ने की आवश्यकता होगी और ऐसा कुछ करने से केवल इसे समझना मुश्किल हो जाएगा। – rdlowrey
क्यों इसे सिर्फ एक php फ़ाइल में पेस्ट न करें और इसे चलाएं? यहां पूछने के बजाय कि यह काम करेगा, बस इसे स्वयं आज़माएं। – Yoshi
बस इसे आपके लिए करने के लिए एक सहायक कार्य बनाएं। ऑब्जेक्ट और सरणी में पास करें। –