PHP 변수를 문자열에 삽입하는 올바른 방법은 무엇입니까?
이 방법:
echo "Welcome ".$name."!"
또는이 방법 :
echo "Welcome $name!"
이 두 가지 방법 모두 내에서 작동 PHP v5.3.5
합니다. 후자는 더 짧고 간단하지만 첫 번째 형식이 더 나은지 또는 더 적합한 것으로 잘 모르겠습니다.
답변
이 두 구문 사이에서 실제로 원하는 것을 선택해야합니다 🙂
개인적으로, 나는 그런 경우 (가변 보간) 두 번째 솔루션을 사용하여 작성하고 읽기가 더 쉽습니다.
결과는 같습니다. 그리고 성능에 영향을 미치더라도 1 은 중요하지 않습니다 .
참고로, 내 대답은 조금 더 완전합니다. 다음과 같이하고 싶은 날 :
echo "Welcome $names!";
PHP는 $names
존재하지 않는 변수 를 사용하려고하는 것처럼 코드를 해석 합니다. -문자열에 “”not ”을 사용하는 경우에만 작동합니다.
그 날에는 다음을 사용해야합니다 {}
.
echo "Welcome {$name}s!"
연결로 대체 할 필요가 없습니다.
또한 첫 번째 구문은 다음과 같습니다.
echo "Welcome ".$name."!";
다음을 사용하여 연결을 피하면서 최적화 할 수 있습니다 .
echo "Welcome ", $name, "!";
(그러나 앞서 말했듯이 이것은별로 중요하지 않습니다 …)
1-수십만 개의 연결 대 보간을 수행하지 않는 한 아마도 그렇지 않습니다.
답변
큰 따옴표로 묶인 문자열은 변수를 삽입해야 할 때마다 작은 따옴표로 묶어야 할 때마다 문자열을 분리 할 필요가 없기 때문에 더 우아합니다.
그러나 함수의 반환 값을 삽입해야하는 경우 괄호로 묶어도 큰 따옴표로 묶인 문자열에 삽입 할 수 없습니다!
//syntax error!!
//$s = "Hello {trim($world)}!"
//the only option
$s = "Hello " . trim($world) . "!";
답변
php4부터 문자열 포매터를 사용할 수 있습니다 :
$num = 5;
$word = 'banana';
$format = 'can you say %d times the word %s';
echo sprintf($format, $num, $word);
출처 : sprintf ()
답변
어느 쪽이든 괜찮습니다. 더 잘 보이는 것을 사용하십시오. 가시성에 관해서도 printf를 확인할 수 있습니다 .
답변
결정의 관점에서 생각하는 간단한 , 읽기 , 일관 하고 쉽게 이해하기 (성능이 여기에 문제가되지 않기 때문에)
-
큰 따옴표로 묶인 내장 변수를 사용하면 객체 속성, 다차원 배열 등을 내장하려는 경우 복잡하고 혼란스러운 상황이 발생할 수 있습니다. 즉, 일반적으로 내장 변수를 읽을 때 읽고있는 내용의 최종 동작을 100 % 확실하게 확인할 수는 없습니다. .
-
{}
and와 같은 목발을 추가해야하는 경우가 종종 있습니다.\
IMO는 혼동을 유발하고 연결 가독성을 거의 동일하게 유지합니다. -
예를 들어 var 주위에 함수 호출을 래핑 해야하는 즉시
htmlspecialchars($var)
연결로 전환해야합니다. -
AFAIK, 상수를 포함 할 수 없습니다.
특정 경우에는 “vars가 포함 된 큰 따옴표”가 유용 할 수 있지만 일반적으로 말하면 연결을 위해 사용합니다 (편리한 경우 작은 따옴표 또는 큰 따옴표 사용).
답변
나는이 질문에 이미 선택된 대답이 있다는 것을 알고 있지만 문자열 보간이 연결보다 빠르게 작동한다는 것을 분명히 보여주는 이 기사 를 발견 했습니다 . 여전히 의심스러운 사람들에게 도움이 될 수 있습니다.
답변
첫 번째로 가서 작은 따옴표를 사용하십시오!
- 읽기 쉬워 다른 프로그래머가 무슨 일이 일어나고 있는지 알 수 있습니다.
- PHP가 소스 코드를 분석 할 때 opcode가 생성되는 방식이 약간 더 빠릅니다. 기본적으로 어쨌든 그렇게 할 것이므로 도움이됩니다!
- 큰 따옴표 대신 작은 따옴표를 사용하면 성능이 훨씬 향상됩니다.
당신이 필요로 할 때 따옴표를 사용해야합니다 유일한 상황이다 \r
, \n
, \t
! 다른 경우에는 오버 헤드를 사용할 가치가 없습니다.
또한 PHP 변수 연결 , phpbench.com 에서 여러 가지 작업 방법에 대한 벤치 마크를 확인해야합니다 .