2009-08-02 14 views
59

Se non restituisco nulla esplicitamente, cosa restituisce esattamente una funzione PHP?cosa restituisce di default una funzione PHP?

function foo() {} 
  1. Che tipo è?

  2. Che valore è?

  3. Come faccio a testarlo esattamente con ===?

  4. Questo passaggio da php4 a php5?

  5. C'è una differenza tra function foo() {} e function foo() { return; }

(Non sto chiedendo come verificare piace if (foo() !=0) ...)

+1

Vedere http://php.net/manual/en/functions.returning-values.php per la documentazione ufficiale – Sophivorus

risposta

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

Si può provare facendo:

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

non ha restituito un valore da una funzione PHP ha la stessa semantica come una funzione che restituisce null.

function foo() {} 

$x=foo(); 

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

Questa volontà di uscita

NULL 
false 
true 

Si ottiene lo stesso risultato se foo viene sostituito con

function foo() {return null;} 

Non c'è stato alcun cambiamento in questo comportamento da php4 a php5 a php7 (I solo tested per sicurezza!)

+0

+1 ma vorrei poter +2, questa è la risposta più completa (include la domanda n. 4 riguardante il cambiamento di comportamento tra le versioni di php) – Jonathan

Problemi correlati