code_junkie

Populating a PHP array: check for index first?

Nov 11th, 2011
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.01 KB | None | 0 0
  1. if (!isset($array[$key])) $array[$key] = $val;
  2.  
  3. $array[$key] = $val;
  4.  
  5. $anArray[ 'level1' ][ 'level2' ][ 'level3' ] = ...
  6.  
  7. $anArray[ 'level1' ][ 'level2' ]
  8.  
  9. <?php
  10.  
  11. function create_array_path( $path, & $inArray )
  12. {
  13. if ( ! is_array( $inArray ) )
  14. {
  15. throw new Exception( 'The second argument is not an array!' );
  16. }
  17. $traversed = array();
  18. $current = &$inArray;
  19.  
  20. foreach( $path as $subpath )
  21. {
  22. $traversed[] = $subpath;
  23. if ( ! is_array( $current ) )
  24. {
  25. $current = array();
  26. }
  27. if ( ! array_key_exists( $subpath, $current ) )
  28. {
  29. $current[ $subpath ] = '';
  30. }
  31. $current = &$current[ $subpath ];
  32. }
  33. }
  34.  
  35.  
  36. $myArray = array();
  37.  
  38. create_array_path( array( 'level1', 'level2', 'level3' ), $myArray );
  39.  
  40. print_r( $myArray );
  41.  
  42. ?>
  43.  
  44. Array
  45. (
  46. [level1] => Array
  47. (
  48. [level2] => Array
  49. (
  50. [level3] =>
  51. )
  52.  
  53. )
  54.  
  55. )
  56.  
  57. $array[$key] = !isset($array[$key]) ? $val : $array[$key];
Add Comment
Please, Sign In to add comment