[php] PHP-문자열에 변수를 연결하거나 직접 삽입

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가 포함 된 큰 따옴표”가 유용 할 수 있지만 일반적으로 말하면 연결을 위해 사용합니다 (편리한 경우 작은 따옴표 또는 큰 따옴표 사용).


답변

나는이 질문에 이미 선택된 대답이 있다는 것을 알고 있지만 문자열 보간이 연결보다 빠르게 작동한다는 것을 분명히 보여주는 이 기사 를 발견 했습니다 . 여전히 의심스러운 사람들에게 도움이 될 수 있습니다.


답변

첫 번째로 가서 작은 따옴표를 사용하십시오!

  1. 읽기 쉬워 다른 프로그래머가 무슨 일이 일어나고 있는지 알 수 있습니다.
  2. PHP가 소스 코드를 분석 할 때 opcode가 생성되는 방식이 약간 더 빠릅니다. 기본적으로 어쨌든 그렇게 할 것이므로 도움이됩니다!
  3. 큰 따옴표 대신 작은 따옴표를 사용하면 성능이 훨씬 향상됩니다.

당신이 필요로 할 때 따옴표를 사용해야합니다 유일한 상황이다 \r, \n, \t! 다른 경우에는 오버 헤드를 사용할 가치가 없습니다.

또한 PHP 변수 연결 , phpbench.com 에서 여러 가지 작업 방법에 대한 벤치 마크를 확인해야합니다 .