2009-08-02 18 views
59

Si no devuelvo nada explícitamente, ¿qué devuelve exactamente una función php?¿Qué devuelve una función php por defecto?

function foo() {} 
  1. Qué tipo es?

  2. ¿Qué valor es esto?

  3. ¿Cómo lo pruebo exactamente con ===?

  4. ¿Ha cambiado esto de php4 a php5?

  5. ¿Hay una diferencia entre function foo() {} y function foo() { return; }

(No estoy pidiendo la forma de probar que como if (foo() !=0) ...)

+1

Consulte http://php.net/manual/en/functions.returning-values.php para documentación oficial – Sophivorus

Respuesta

85
  1. null
  2. null
  3. if(foo() === null)
  4. -
  5. No.

Puede probarlo haciendo:

$x = foo(); 
var_dump($x); 
32

No devolver un valor de una función de PHP tiene la misma semántica que una función que devuelve un valor nulo.

function foo() {} 

$x=foo(); 

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

Esta es la salida

NULL 
false 
true 

Se obtiene el mismo resultado si foo es reemplazado con

function foo() {return null;} 

No ha habido ningún cambio en este comportamiento de php4 a php5 a php7 (I ¡solo tested para estar seguro!)

+0

+1 pero me gustaría poder +2, esta es la respuesta más completa (incluye la pregunta # 4 con respecto al cambio de comportamiento entre las versiones de php) – Jonathan

Cuestiones relacionadas