Why not augment the userland function to the following: function getd( &$sourceArray, $key, $default=null ) { if( isset( $sourceArray[$key] ) ) { return $sourceArray[$key]; }
return $default; } Cheers, Rob. On Mon, 2003-08-18 at 17:03, Griggs Domler wrote: > It's rare to find functionality that cannot be effectively implemented > in userland PHP code, but this appears to be one of them. > > The issue here is the capability to check if an array index (or > variable) is set, if so, return its value, or return a passed in default > value. This can be accomplished using if statements or the ternary > operator, but they quickly become tiresome for so routine a task. > Especially when dealing with nested associative arrays, for example: > > $myVar = > (isset($_SESSION['application']['section']['page']['title']))?$_SESSION[ > 'application']['section']['page']['title']:"Default Title"; > > Wouldn't this be better: > > $myVar = > getd($_SESSION['application']['section']['page']['title'],"Default > Title"); > > At first glance defining a function that will accomplish this appears > easy: > > function getd($var,$default='') > { > if(isset($var)) > return $var; > else > return $default; > } > > $myVar = getd($arr['noindex']); > > But this is not notice level compliant, producing an error if the index > doesn't already exist. > > Re-writing the function to pass by reference seems to fix this at first > glance: > > function getd(&$var,$default='') > { > . . . > } > > $myVar = getd($arr['noindex']); > > > It no longer gives a notice. But the call mentioned above will now > create the index mentioned, setting its value to null, which, while not > necessarily wrong, still means that a foreach iteration or array_keys() > call will show that the key now exists. (though isset() will not.) > > Since writing a userland function to accomplish this seems impossible > while maintaining notice-level compliance, could this be accomplished at > the language level? Perhaps by adding a statement similar to isset? It > would seem a very helpful addition to PHP and would not need to affect > other language constructs. -- .---------------------------------------------. | Worlds of Carnage - http://www.wocmud.org | :---------------------------------------------: | Come visit a world of myth and legend where | | fantastical creatures come to life and the | | stuff of nightmares grasp for your soul. | `---------------------------------------------' -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php