views:

490

answers:

2

If I return nothing explicitly, what does a php function exactly return?

function foo() {}
  • What type is it?

  • What value is it?

  • How do I test for it exactly with === ?

  • Did this change from php4 to php5?

  • Is there a difference between function foo() {} and function foo() { return; }

(I am not asking how to test it like if (foo() !=0) ...)

+17  A: 
  1. null
  2. null
  3. if(foo() === null)
  4. -
  5. Nope.

You can try it out by doing:

$x = foo();
var_dump($x);
PatrikAkerstrand
+6  A: 

Not returning a value from a PHP function has the same semantics as a function which returns null.

function foo() {}

$x=foo();

echo gettype($x)."\n";
echo isset($x)?"true\n":"false\n";
echo is_null($x)?"true\n":"false\n";

This will output

NULL
false
true

You get the same result if foo is replaced with

function foo() {return null;}

There has been no change in this behaviour from php4 to php5 (I just tested to be sure!)

Paul Dixon