2009-08-02 2 views
59

Если я не возвращаю ничего явно, что точно возвращает функция php?Что возвращает функция php по умолчанию?

function foo() {} 
  1. Какой он?

  2. Какое значение?

  3. Как я могу проверить его с помощью ===?

  4. Это изменилось с php4 на php5?

  5. Есть ли разница между function foo() {} и function foo() { return; }

(Я не спрашиваю, как проверить это, как if (foo() !=0) ...)

+1

См. http://php.net/manual/en/functions.returning-values.php для официальной документации – Sophivorus

ответ

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

Вы можете попробовать его, выполнив:

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

Не возвращает значение из функции PHP имеет ту же семантику, как функция, которая возвращает нуль.

function foo() {} 

$x=foo(); 

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

Это выведет

NULL 
false 
true 

Вы получите тот же результат, если Foo заменяется

function foo() {return null;} 

Там не было никаких изменений в этом поведении от php4 к php5 к php7 (I просто tested, чтобы быть уверенным!)

+0

+1, но я бы хотел, чтобы я мог +2, это более полный ответ (включает вопрос № 4 об изменении поведения между версиями php) – Jonathan