Accessing All Array Elements in Nested Arrays


 print_r($a); 


Nested arrays can be printed really easily by using print_r(). Take a look at the output of the listing in Figure 2.1.

Printing a nested array with print_r() (print_r.php)
 <pre> <?php   $a = array(     'Roman' =>       array('one' => 'I', 'two' => 'II', 'three' =>         'III', 'four' => 'IV'),     'Arabic' =>       array('one' => '1', 'two' => '2', 'three' =>         '3', 'four' => '4')   );   print_r($a); ?> </pre> 

Figure 2.1. Printing array contents with print_r().


TIP

If you set the second parameter of print_r() to true, the array's contents are not sent to the client, but are returned from the function, so that you can save this information in a variable and process it further.


However, the output of the preceding code is hardly usable for more than debugging purposes (see Figure 2.1). Therefore, a clever way to access all data must be found. A recursive function is a reasonable way to achieve this. In this, all elements of an array are printed out; the whole output is indented using the HTML element <blockquote>. If, however, the array element's value is an array itself, the function calls itself recursively, which leads to an additional level of indention. Whether something is an array can be determined using the PHP function is_array(). Using this, the following code can be assembled. See Figure 2.2 for the result.

Printing a Nested Array Using a Recursive Function (printNestedArray.php)
 <?php   function printNestedArray($a) {     echo '<blockquote>';     foreach ($a as $key => $value) {       echo htmlspecialchars("$key: ");       if (is_array($value)) {         printNestedArray($value);       } else {         echo htmlspecialchars($value) . '<br />';       }     }     echo '</blockquote>';   }   $arr = array(     'Roman' =>       array('one' => 'I', 'two' => 'II', 'three' =>         'III', 'four' => 'IV'),     'Arabic' =>       array('one' => '1', 'two' => '2', 'three' =>         '3', 'four' => '4')   );   printNestedArray($arr); ?> 

Figure 2.2. Printing array contents using a recursive function.





PHP Phrasebook
PHP Phrasebook
ISBN: 0672328178
EAN: 2147483647
Year: 2005
Pages: 193

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net