2014-11-07 3 views
-29

PHP 인터프리터에 넣으면 오류가 표시되지 않습니다. 그것은 나에게 맞지 않습니다. 아무도 어떤 빛을 이 작동합니까? 나는 정말로 렉서/파서에 대한 통찰력을 찾고있다.왜이 유효한 PHP 코드입니까

<?php 
-01;[];[];[];4;[[-1]]; 
+6

기본적으로 모든 작업이 없습니다. 할당 된 배열은 비어 있지만 할당되지 않으므로 버려집니다. –

+3

당신에게 옳지 않은 것은 무엇입니까? –

+2

숫자 리터럴도 유효한 문이지만 쓸모없는 문구입니다. –

답변

6

코드에는 올바른 구문이있는 것 같지만 그대로 사용하지는 않습니다.

줄 바꿈이 없으므로 모든 것이 뒤죽박죽로 보입니다.하지만 에 각 문 끝의 세미콜론으로 적절한 구문을 사용합니다. 당신이 그 코드를보다 읽기로 재 작성한다면

, 당신이 할 수 있습니다 :

-01; // This is just a negative number with a meaningless 0 padded in front of it. 

[]; // This is an empty array that isn't assigned to any variable, hence useless; 

[]; // same 

[]; // same 

4; // Again, a number that isn't assigned to any variable nor expression. 

[[-1]]; // This is a multi-dimensional array with -1 as the inner arrays value, that isn't assigned to anything either. 

유효한 코드,하지만 쓸모.

PHP Parse error: syntax error, unexpected '[' in .... on line ....

또한, 전체 같은 코드가 작동하지 않습니다 : 당신의 가정에도 불구하고

0

,이 코드는 [];[[-1]];에서 구문 오류가 있습니다. 그러나 코드의 다른 부분은 합법적입니다. PHP 시작 태그 (이 파일을 다른 파일에 포함하지 않을 때와 같이 특정 상황에서는 종료 태그가 필요하지 않음)와 두 개의 상수 표현식이 있습니다.

-014 각각 -1 및4 정수로 평가 식이다. 이 표현 뒤에는 문장의 끝을 나타내는 ;이옵니다. 그렇다면 이러한 문은 유용하지 않은데도 (오류는 발생하지 않음)으로 처리됩니다. 구문 분석기는 코드에서 유용성 또는 쓸모 없음을 찾지 않습니다. 자원 (시간과 메모리)만을 소비하는 쓰레기 진술이 아닌, 의미있는 일을하는 코드를 작성하는 것은 당신에게 달려 있습니다.

+1

-1. 이 답변에는 두 가지 중요한 오류가 있습니다. 첫째,'[];는'array();'와 동등한 PHP 5.4부터 완벽하게 유효합니다. 둘째, 파일을 다른 파일에 포함한다고해서 닫는'?>'태그를 사용해야한다는 것을 의미하지는 않습니다. 공식 PHP-FIG 스타일 가이드 [PSR-2] (http://www.php-fig.org/psr/psr-2/)는 PHP 만 포함 된 파일에서 생략해야한다고 지시합니다. –

관련 문제