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