2013-04-04 2 views
3

См. Ниже код, который отлично работает в PHP. Может ли кто-нибудь объяснить мне, как работает этот код. Потому что в приведенном ниже коде я объявил $caregory_idwithout semicolon и без какого-либо замедления значения. Тогда и этот код работает без ошибок, и var_dump($category_id) возвращает мне значение null.Объясните, как этот код работает в PHP?

Как php выполняет этот код без точки с запятой?

<?php 
    $category_id= //No semicolon 
    var_dump($category_id); //returns NULL 
?> 
+1

Newline не является терминатором утверждения. То, что у вас там, эквивалентно '$ foo = bar ($ foo);'. – DCoder

+0

Что такое category_id в вашем коде? –

ответ

13

Это работает, потому что PHP обрабатывает код, как это:

$category_id = var_dump($category_id); 

Возвращаемое значение var_dump() получает назначение в $category_id. Неопределенные переменные в PHP неявно установлены на null, что вы видите на выходе var_dump(). Однако вы также получите уведомление о $category_id, которое не определено; если вы не видите его, вы должны использовать этот код в ваш скрипт:

error_reporting(-1); 
ini_set('display_errors', 'On'); 

Эти настройки также рекомендуется во время развития, поскольку они могут поймать вопросы, которые в противном случае остались незамеченными на производственной машине.

+0

Да, когда вы запускаете этот код через синтаксический анализатор, он выдает уведомление: 'Примечание: неопределенная переменная: category_id в /var/www/yourscript.php: eval() 'd код в строке 2' – Oldskool

+0

Спасибо за подробное описание , Я понимаю, что происходит. –

+0

@Jack +1 для описания. –