문제

방금 포럼을 탐색하고 누군가가 웹에서 찾은 PHP 파일에 대해 물었습니다. 코드에는 다음과 같은 여러 지점이 있습니다.

if ($REMOTE_ADDR == "") $ip = "no ip"; else $ip = getHostByAddr($REMOTE_ADDR);

나는 항상 조건이 사실이라면 당신이하고 싶은 일을 동봉하기 위해 괄호가 필요하다고 생각했습니다. 같은 줄에있는 것과 같은 다른 대안이 있습니까?

다음과 같은 다른 줄도 있습니다.if ($action != ""): mail("$adminaddress","Visitor Comment from YOUR SITE",

내 본능은 이것이 효과가 없을 것이라고 말하는 것이지만, 그것이 구식 PHP 파일이고 작동하는 데 사용되는지 모르겠습니까?

도움이 되었습니까?

해결책

다음과 같은 다른 진술을 할 수 있습니다.

<?php
if ($something) {
   echo 'one conditional line of code';
   echo 'another conditional line of code';
}


if ($something) echo 'one conditional line of code';

if ($something)
echo 'one conditional line of code';
echo 'a NON-conditional line of code'; // this line gets executed regardless of the value of $something
?>



그런 다음 대체 구문으로 다음을 쓸 수도 있습니다.

<?php
if ($something):
   echo 'one conditional line of code';
   echo 'another conditional line of code';
elseif ($somethingElse):
   echo 'one conditional line of code';
   echo 'another conditional line of code';
else:
   echo 'one conditional line of code';
   echo 'another conditional line of code';
endif;
?>



대체 구문을 사용하면 다음과 같이 구문 분석 모드를 벗어날 수도 있습니다.

<?php
if ($something):
?>
one conditional line of code<br />
another conditional line of code
<?php
else:
   echo "it's value was: $value<br />\n";
?>
another conditional line of code
<?php
endif;
?>

그러나 이것은 정말로 빨리 지저분 해져서 사용하는 것이 좋습니다 (템플릿-로그 제외).



그리고 그것을 완료하기 위해 :

<?php
$result = $something ? 'something was true' : 'something was false';
echo $result;
?>

equals

<?php
if ($something) {
   $result = 'something was true';
} else {
   $result = 'something was false';
}
echo $result;
?>

다른 팁

조금 더 자세하게 설명하기 위해, 버팀대가 선택 사항 인 이유는 구문이 다음과 같기 때문입니다.

if(CONDITION) BLOCK
[elseif(CONDITION) BLOCK]
[else BLOCK]

블록은 단일 진술 일 수 있습니다.

foo();

또는 중괄호로 둘러싸인 진술 그룹이 될 수 있습니다.

{
    foo();
    bar();
}

제 생각에는

if ($REMOTE_ADDR == "") $ip = "no ip"; else $ip = getHostByAddr($REMOTE_ADDR);

유효하지만 읽기가 훨씬 어렵습니다.

if ($REMOTE_ADDR == "") {
    $ip = "no ip"; 
} else {
    $ip = getHostByAddr($REMOTE_ADDR);
}

9 년이 지났고 아무도 언급 한 사람이 놀랍습니다. 3 배 운영자:

$ip = ($REMOTE_ADDR == "") ? "no ip" : getHostByAddr($REMOTE_ADDR);

할당 IMHO에 대해 훨씬 더 명확합니다 - 일반적인 변수 할당과 같이 변수가 지정된 것으로 이어지기 때문입니다.

브레이스 (브래킷 아님)는 대부분의 C와 같은 구문에서와 같이 PHP에서 선택 사항입니다. 어쩌면 당신은 Perl을 생각하고있을 것입니다. IF 구문의 형태에 필요합니다.

결장은 PHP가지지하는 대체 제어 구조 형태입니다. 나는 그것을 싫어하지만 일부 사람들 (특히 템플릿 시스템 디자이너)은 그것을 좋아합니다.

예, 버팀대 제외는 허용되지만, 여러 번 해당 구문을 사용하지 않은 두 가지 이유를 들었습니다.

  1. 읽기가 더 어렵습니다. 다른 프로그래머에게는 덜 분명합니다.
  2. IF 내부에 무언가를 추가하기 위해 간청하면 대부분의 편집자가 닫기 버팀대를 추가하기 때문에 처음 코딩 할 때 더 어려운 버팀대를 추가해야합니다.

또한, 콜론 구문은 유효합니다. 대안은 여기에서 찾을 수 있습니다. http://php.net/manual/en/control-structures.alternative-syntax.php

brackets are needed to enclose what you want to do if the condition is true

나는 이것을 요구하는 언어를 생각할 수 없습니다

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top