Nested objects are objects created inside another object. So, the property of an object (it's value) can be an Array or even another object.
Let's see an example:.
// Create a main object "Courses", with 2 properties:"type" and "site", and a method "getCourse()" // The first property, "type", will have as value an Array with 2 elements // The second property "site", will have as value another object, which will have a property "url" // The method "getCourse()" will use an element from the array in "type" property, // and the property of the nested object var Courses = new Object(); Courses.type = ['lessons', 'tutorials']; // property with an Array value Courses.site = new Object(); // property which contains a nested object Courses.site.url = 'coursesweb.net'; // property of the nested object Courses.getCourse = function(nr:int) { // Method of the main object var sir1 = this.tip[nr]; // uses a value from the "type" property var sir2 = this.site.url; // uses the value of the "url" property (of the nested object) return sir1+ ' - '+ sir2 }; // Displays in Output the result returned by calling the method "getCourse()" trace(Courses.getCourse(1)); // tutorials - coursesweb.net- The property "site" is defined as a sub-object in the main object (Courses);
You can traverse the elements of an object the same way as when traversing an associative Array, with the instruction "for..in" or "for each..in".
Study the following example, and the comments in code.
// define aunction to traverse objects // Takes 2 arguments: "obj" for the object which will be traversed, and "val" for the value that must be searched in it function parsObj(obj:Object, val:*):String { // define a variable to store the value returned by this function var re:String = 'no prop'; // defina a "for..in" loop to traverse "obj" for(var key:String in obj) { // If the value of the current element is the same as the value of "val" // adds in "re" the name of that property and stops the loop if(obj[key]==val) { re = key; break; } } return re; } // Define object with 2 properties ("courses", "tutorials") and a method "Sum()" var anObject:Object = new Object(); anObject.course = 'Flash'; anObject.tutorial = 'AS3'; anObject.Sum = function(a:Number, b:Number):Number { return a+b; } // Call the function "parsObj()", passing the object and value 'AS3' trace(parsObj(anObject, 'AS3')); // tutorial- The "for(var key:String in obj)" loop stores in "key" the current property of the "obj", then, the "if(obj[key]==val)" checks if the value of this property is the same as the value of "val".
// Define object with 2 properties ("courses", "tutorials") and a method "Sum()" var anObject:Object = new Object(); anObject.course = 'Flash'; anObject.tutorial = 'ActionScript 3'; anObject.Sum = function(a:Number, b:Number):Number { return a+b; } // defina a "for each..in" loop to traverse "anObject" // Displays in Output the value of each element for each(var elm:* in anObject) { trace(elm); }This example will show in Output:
<ul> <li>http://coursesweb.net/html/</li> <li>http://coursesweb.net/css/</li> </ul>
.some_class { display: list-item; }
var obj = { "courses": ["php", "javascript", "ajax"] }; var jsonstr = JSON.stringify(obj); alert(jsonstr); // {"courses":["php","javascript","ajax"]}
$strhtml = '<body><div id="dv1">CoursesWeb.net</div></body>'; $dochtml = new DOMDocument(); $dochtml->loadHTML($strhtml); $elm = $dochtml->getElementById("dv1"); echo $elm->nodeValue; // CoursesWeb.net