.connection을 사용하는 것보다 echo string을 사용하는 것이 더 좋다고 합니다. 먼저 이유를 이야기하지 말고, 다음 두 문장을 살펴보겠습니다
<?php // 逗号比.更节省时间? echo '1+5=' . 1+5; echo '1+5=' . 5+1;
결과는?
1+5=6? 1+5=6? —————— 6? 2? —————— 6.6? 6.6? ——————
echo '5 1=' 의 결과는 10이므로 결과는 6과 2라고밖에 말할 수 없습니다.
왜 그럴까요? PHP에는 추가로 교환 속성이 없는 걸까요..
왜인지는 생각하지 마세요. 위의 마침표를 쉼표로 바꾸면 시도해 보세요.
echo '1+5=' , 5+1; //输出 1+5=6 echo '1+5=' , 1+5; //输出 1+5=6
쉼표를 사용해야만 예상한 결과를 얻을 수 있음을 알 수 있습니다.
그럼 마침표는 왜 안되나요?
echo ('1+5' . 5)+1; //输出2
앞에 괄호를 추가해도 결과는 같습니다.
PHP가 먼저 문자열을 연결한 다음 왼쪽에서 오른쪽으로 계산을 수행한다는 것을 증명하세요.
좋네요. 문자열이 먼저 연결되어 있으므로 "1 55"여야 합니다. 그러면 이 문자열에 1을 더하면 2가 출력됩니다.
이는 PHP에서 문자열을 숫자로 변환하는 메커니즘과 관련이 있습니다.
echo (int)'abc1'; //输出0 echo (int)'1abc'; //输出1 echo (int)'2abc'; //输出2 echo (int)'22abc'; //输出22
위의 예에서 문자열을 숫자로 변환해야 하는 경우 PHP는 문자열의 시작 부분을 검색하여 숫자로 변환하는 것을 볼 수 있습니다.
그렇지 않으면 0을 반환하세요.
지금 바로 1 55로 돌아가세요. 이 문자열은 1 55이므로 여기에 1을 더하면 1이 됩니다.
우리의 추측을 증명하기 위해 검증해 보겠습니다.
echo '5+1=' . 1+5; //输出10 echo '5+1=' . 5+1; //输出6 echo '1+5=' . 1+5; //输出6 echo '1+5=' . 5+1; //输出2
결과는 우리의 가정이 맞았다는 것을 증명했습니다.
그렇다면 왜 쉼표를 사용하면 위의 문제를 피할 수 있을까요?
설명서에는 쉼표를 사용하면 여러 매개변수를 의미한다고 나와 있습니다.
즉, 다중 매개변수입니다.
쉼표로 구분된 것은 N개의 매개변수와 같습니다. 즉, echo를 함수로 사용하는 것입니다.
이 경우 echo는 각 매개변수를 먼저 계산한 후 연결하여 출력하므로 쉼표를 사용하면 위의 문제는 발생하지 않습니다 :)
php 에코 매뉴얼
<?php // Strings can either be passed individually as multiple arguments or // concatenated together and passed as a single argument echo 'This ', 'string ', 'was ', 'made ', 'with multiple parameters.', chr(10); echo 'This ' . 'string ' . 'was ' . 'made ' . 'with concatenation.' . "\n";
왜 빠른지는 쉽게 이해할 수 있습니다. 쉼표의 수는 에코 호출 횟수를 나타내지만 .를 사용하여 먼저 echo에 연결합니다.
그러나 접합 속도는 에코 속도보다 느립니다.
깊이 이해해보면 VLD는 아래와 같습니다. 위대한 신 @tywei 의 사진이에요
하단보다 상단에 CONCAT이 하나 더 있고, 상단보다 하단에 에코가 하나 더 있습니다.