tags:

views:

39

answers:

2

In Perl, if I want to default a value that might exist, for example as a passed in parameter, I can do this:

  $var = parm->('variable') || 'default';

Is there something analogous in PHP or do I have to check the value after assigning, and if it is still null assign it the default value?

+3  A: 
$var = (!empty($foo)) ? $foo : 'default';
Mike B
important to remember that `empty()` is true for '', 0, '0', false, null, array(). If any of those values are valid for `$var`, then the test might better use `isset()`
dnagirl
+2  A: 

Not exactly.

PHP 5.3 introduced what they call "the ternary shortcut".

// old way
$foo = $foo ? $foo : 'default';

// new way in 5.3
$foo = $foo ?: 'default';

Which isn't even that much of a shortcut and only works short-circuit-able values (if 0 is a valid value for $foo this shortcut will fail.)

Otherwise you'll have to do the type/existence checking the old, hard, manual way.

You can also specify default values for parameters in the signature - not sure if that's exactly what you're getting at but here's that in action

function foo( $bar = 'baz' )
{
  echo $bar;
}

foo(); // baz
Peter Bailey