|  | Posted by Andy Hassall on 06/09/05 23:27 
On Thu, 9 Jun 2005 12:59:12 -0400, "Robert Oschler" <no-mail-please@nospam.com>wrote:
 
 >With PHP 4, is there a way to convert an associative array to an object?
 >
 >For example, suppose I have the following arrays inside a nested associative
 >array ($nestedAA):
 >
 >$AA1['field1'] = 'fieldValue1';
 >
 >$AA2['field2'] = 'fieldValue2';
 >
 >$nestedAA['AA1'] = $AA1;
 >$nestedAA['AA2'] = $AA2;
 >
 >I would like to take $nestedAA and convert it to an object called
 >$nestedObject with properties I could access like this:
 >
 >echo $nestedObject->AA1->field1;  # This would print 'fieldValue1'
 >echo $nestedObject->AA2->field2;  # This would print 'fieldValue2'
 >
 >How can I do this?  Note, I would like a conversion method that I could use
 >with any nested associativee array and create the object dynamically (at
 >runtime).
 
 Something like:
 
 <pre>
 <?php
 $AA1['field1'] = 'fieldValue1';
 $AA2['field2'] = 'fieldValue2';
 
 $nestedAA['AA1'] = $AA1;
 $nestedAA['AA2'] = $AA2;
 
 var_dump($nestedAA);
 
 function array_to_obj($array, &$obj)
 {
 foreach ($array as $key => $value)
 {
 if (is_array($value))
 {
 $obj->$key = new stdClass();
 array_to_obj($value, $obj->$key);
 }
 else
 {
 $obj->$key = $value;
 }
 }
 return $obj;
 }
 
 $nestedObject= new stdClass();
 array_to_obj($nestedAA, $nestedObject);
 
 print_r($nestedObject);
 
 echo $nestedObject->AA1->field1;  # This would print 'fieldValue1'
 echo $nestedObject->AA2->field2;  # This would print 'fieldValue2'
 
 ?>
 </pre>
 
 --
 Andy Hassall / <andy@andyh.co.uk> / <http://www.andyh.co.uk>
 <http://www.andyhsoftware.co.uk/space> Space: disk usage analysis tool
  Navigation: [Reply to this message] |