1. 문자열형 숫자를 숫자형으로 변환
$str = '123'; //方法一 (int)$str; //方法二 intval($str); //方法三 +$str;
방법 1과 방법 2는 문자열 숫자에 문자가 포함되어 있어도 강제 변환됩니다. 세 번째 방법은 그것이 순수한 숫자 문자열인지 확인해야 합니다. 그렇지 않으면 오류가 보고됩니다.
권장: "php training"
2. 배열에 요소 추가
$arr = ['a']; //方法一 array_push($arr,'b', 'c'); //方法二 $arr[] = 'd';
1. 요소를 푸시하는 경우 함수 호출에 대한 추가 부담을 줄일 수 있으므로 두 번째 방법을 사용하는 것이 더 효율적입니다.
2. 여러 요소가 동시에 푸시되는 경우 파일 끝 부분에 대한 포인터를 반복적으로 얻을 필요가 없으므로 array_push를 사용하는 것이 더 효율적입니다.
3. for loop
//正常写法 for($i = 0; $i < count($arr); $i++){ // } //优化一 for($i = 0, $len = count($arr); $i < $len; $i++){ // } //优化二 for($i = count($arr) - 1; $i > -1; --$i){ // }
최적화 1: 문제는 조건부 판단이 매번 배열의 길이를 계산해야 한다는 점입니다. 처음에 변수를 선언하여 저장하는 것이 좋습니다. 다른 언어의 for 루프도 아마 같을텐데...
최적화 2: 작은 것에서 큰 것으로 늘릴 필요가 없을 때 $len 변수를 저장하면 됩니다. 작은 최적화도 있습니다. $i가 $i--보다 빠릅니다.
요약: 최적화 2가 무조건 좋다는건 아니고 그냥 이런 생각이 들어서 써봤습니다. 하지만 좋은 for 루프는 최소한 최적화에 주의해야 한다고 생각합니다. 또한 $i++를 ++$i로 변경할 수도 있습니다.
4. foreach traversal
//写法一 foreach($arr as $k => $v){ // } //写法二 foreach($arr as $v){ // } //写法三 foreach($arr as &$v){ // } //写法四 $arr = [ [1,2,3], [4,5,6] ]; foreach($arr as list($a,$b,$c)){ // }
1. 우선 첫 번째와 두 번째 쓰기 방법에서 $v는 주소를 가져오지 않으며, $v는 키 값의 복사본입니다. . 따라서 foreach에서 배열/객체 자체를 변경하지 마십시오. 쓸모가 없습니다.
2. 키 이름이나 인덱스가 필요하지 않으면 $k를 쓰지 마세요.
3. 쓰기 방법 3, 주소 참조 할당의 경우 값이 클 때 공간을 절약할 수 있다는 장점이 있습니다. 하지만 어떤 방식으로 작성하든 $v는 foreach 루프 이후에 유지됩니다. 이때 주소 가져오기 방법을 사용하면 $v를 다시 사용하는 것이 좋지 않습니다. ($v).
4. 네 번째 작성 방법은 2차원 배열/객체를 적용하는 방법으로, 키-값 배열을 풀기 위해 목록을 사용합니다. 참고로, 리스트에 수신된 변수의 개수가 실제 2차원 배열의 길이보다 크면 오류가 보고됩니다. 그보다 적으면 그냥 수신되지 않으므로, 고려할 필요가 있습니다. 그것을 사용하여.
5. null 판정 관련
//写法一 is_null($a); //写法二 $a === null
두 가지 작성 방법은 완전히 동일한 효과를 가집니다. 함수 호출을 저장하려면 두 번째 방법을 사용하세요.
또한 ===를 사용할 수 있다면 ==를 사용하지 마세요.
6. 다중 판단
$a = 1; //写法一 if($a === 0){ // }elseif($a === 1){ // }else{ // } //写法二 do{ if($a === 0){ // break; } if($a === 1){ // break; } // }while(false); //写法三 switch(true){ case 0: // break; case 1: // break; default: // }
7. list
//妙用一 list($a,$b) = [$b,$a]; //妙用二 list(,$fn) = explode('_','Api_deleteUser');
8. 영어 문자열 길이가 한계를 초과했습니다
//一般方式 strlen($str) > 10; //优化方式 isset($str[10]);
isset은 PHP 문이고 strlen은 함수입니다.
9. null 판단 할당을 작성하는 여러 가지 방법
//当$a不为null时$b = $a,否则$b = 233333。 //方式一 $b = $a or $b = 233333; //方式二 $b = $a ? $a : 23333; //方式三 $b = $a ?: 233333; //方式四,PHP7 $b = $a ?? 233333;
3번째 방법과 4번째 방법의 차이점에 주의하고, 무엇을 판단하고 싶은지 명확하게 하세요. 방법 4 외에 다른 세 가지 방법도 false,'','0',0,[]를 판별할 수 있습니다.
10. 두 변수를 교환하세요
//方式一:比较清晰,有变量产生 $temp = $a; $a = $b; $b = $temp; //方法二:比较清晰,但也会产生临时变量 list($b, $a) = [$a,$b]; //方式三:在整数运算时互逆运算比较靠谱,但+ – * /可能精度丢失或溢出 $a = $a + $b; $b = $a - $b; $a = $a - $b;
11. if
//递归 function fibonacci($n){ if($n == 0 || $n == 1){ return 1; } return fibonacci($n - 1) + fibonacci($n - 2); } //非递归 function fibonacci($n){ $arr = [1,1]; for($i = 2; $i < $n + 1; ++$i){ $arr[] = $arr[$i - 1] + $arr[$i - 2]; } return $arr[$n]; }
13 뒤에 중괄호를 생략하지 마세요. time() 대신에 $_SERVER['REQUEST_TIME']을 사용하세요. 함수 호출로 이어지며, 정확한 시간 값이 필요하지 않은 경우 전자가 훨씬 빠릅니다.
14. continue 사용/사용 안함
continue는 루프의 선두로 돌아가는 것입니다. 루프의 끝은 루프 헤더로 돌아가는 것이므로 적절한 구성을 통해 이 문을 사용하지 않아도 되므로 효율성이 향상됩니다.
15. 변수를 먼저 정의한 다음 사용하세요.
정의되지 않은 변수를 사용하는 것이 더 저렴합니다. 정의된 변수를 사용하는 것보다 8배 이상 느립니다!
PHP 엔진은 먼저 일반 논리에 따라 이 변수를 가져오지만 이 변수는 존재하지 않으므로 PHP 엔진은 NOTICE를 발생시켜야 합니다. 정의되지 않은 변수를 사용할 때는 이를 따르고 New 변수를 반환합니다.
16. 네이밍 관련
PSR 사양에 따르면 메소드는 작은 카멜 케이스를 사용해야 합니다.
PSR 사양에 따르면 클래스 이름은 카멜 표기법으로 지정해야 합니다.
사양에는 변수 이름이 명확하지 않으므로 프로젝트 내에서 통일해야 합니다. (밑줄 친 버전이 더 이해하기 쉽습니다.)
부울 변수는 가능한 한 can, is, has로 시작해야 합니다.
17. 정규식 사용을 피하세요
18. 변수를 큰따옴표와 heredocs로 묶으려면 중괄호를 사용하세요.
더 많은 프로그래밍 관련 내용을 보려면 PHP 중국어 웹사이트
Programming Tutorial칼럼을 주목하세요!
PHP 비디오 튜토리얼, 학습 주소:https://www.php.cn/course/list/29/type/2.html
위 내용은 PHP에 대한 몇 가지 실용적인 팁의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!