2015-06-18 2 views
5

Мой код:

$a = []; 
isset($a[0]) and unset($a[0]); 

это показывает "syntax error, unexpected 'unset' (T_UNSET)"

но

$a = []; 
isset($a[0]) and exit(); 

это работает!

Оба exit() и unset() не возвращают никакого значения. Почему одно работает, а не другое?

+3

могли бы вы ШАР свою информацию об ошибке? –

+0

'exit' не возвращает значение, потому что программа _exits_! –

+4

код настолько уродлив, что именно вы хотите сделать? – Umair

ответ

3

unset - это языковая конструкция, а не реальная функция (вот почему вы получаете T_UNSET и не более общий термин), поэтому он не играет по тем же правилам, что и нормальная функция. isset и exit также являются языковыми конструкциями, но они ведут себя как обычные функции.

0

Как я спросил в комментариях, и вы сказали, что вы хотите удалить значение из массива,

Почему бы просто не написать

$a = []; 
if(isset($a[0])){ 
unset($a[0]); 
// And exit() if you want to 
} 
+0

спасибо, но я интересно, почему – yrssoft

+0

Потому что это простой способ писать и читать ... еще, будущие программисты, работающие над вашим кодом, скажут вам плохие слова: P – Umair