이러한 PHP 개념 중 일부는 처음에는 이해하기 어렵습니다. 일부 사람들에게 도움이 되고 앞으로의 어려움을 줄이기 위해 모두 나열해 보겠습니다.
1. 가변변수
variable_variables.php
echo $$a.'
';
$b = '존';
$c = '메리';
$e = '조';
$students = array('b','c','e');
echo ${$students[1]};
/*
foreach($students as $seat){
echo $$seat.'
';
}
$$var[1]
${$var[1]} for #1
*/
$a = '안녕하세요';
hello를 변수 $a에 할당하여 $$a = ${hello} = $hello = 'hello everything';
$$students[1]의 경우 혼란을 야기할 수 있으며, '['의 연산자가 더 높더라도 결과가 출력되지 않을 수 있습니다.
다음과 같이 작성하는 것이 좋습니다: ${$students[1]} = 'Mary'
2. 배열의 함수(array function)
array_functions.php
';
$numbers = array(1,2,3,4,5,6);
print_r($numbers);
echo '< ;br / >';
// 배열에서 첫 번째 요소를 이동합니다.
// 인덱스가 재설정됩니다.
$a = array_shift($numbers);
echo 'a: '.$a.'
';
print_r($numbers);
// 요소를 배열 앞쪽으로 푸시
// 배열 개수를 반환하고 배열 인덱스를 재설정합니다.
$b = array_unshift($numbers, 'first');
echo '
b: '.$b.'
';
print_r($numbers);
echo '
pop & push
';// 요소를 배열의 마지막으로 푸시
$d = array_push($numbers, 'last');
echo 'd: '.$d.'
';
print_r($numbers);
3. 날짜 및 시간(time and date)
Unix 시간을 만드는 방법에는 3가지가 있습니다(1970년 1월 1일부터 현재까지의 초 수)
time(); 현재 타임스탬프를 반환합니다
mktime($hr, $min, $sec, $month, $day, $year); 2012) 2012년 5/22 6:30:00
strtotime($string); strtotime("+1 day") 내일 이 시간의 타임스탬프를 반환 more '지난 월요일' ' Lasy Year '
checkdate($month, $day, $year); 날짜가 참인지 확인 checkdate(5,32,2012) ? 'true' : 'false' // return false
타임스탬프를 얻은 후 이를 2012/5/22와 같이 읽을 수 있는 형식으로 변환해야 합니다.
2가지 방법이 있습니다 date($format, $timestamp); strftime($ format [,$timestamp] )
두 번째 유형인 strftime("%Y-%m-%d %H:%M:%S")를 사용하는 것이 좋습니다. // return 2012-05-22 15 :46: 40
5. 서버변수(서버 및 실행환경정보)
$_SERVER
server_variables.php
6.variable_scope(변수 전역 정적 범위)
static_variables.php
test();
echo '
';
test();
echo '
';
test();
echo '
';
echo '
test1();
echo '
';
test1();
echo '
';
test1();
echo '
';
test() 함수의 변수 $a는 $a++의 결과를 저장하지 않으며 test()를 반복해서 호출해도 $a의 값이 증가하지 않습니다
test1() 함수의 변수 $a는 정적 변수인 staic $a = 0을 선언합니다.
인용문: 정적 변수는 로컬 함수 범위에만 존재하지만 프로그램 실행이 이 범위를 벗어나도 값을 잃지 않습니다.
정적 변수는 로컬 함수 범위, 즉 test1() 함수 본문에만 존재할 수 있지만 프로그램이 test1() 범위를 벗어나면 정적 변수는 해당 값, 즉 $를 잃지 않습니다. test1()이 다시 호출되면 변수는 1씩 증가합니다. $a = 1;
global_variables.php
함수 Sum()
{
전역 $a, $b;
$b = $a + $b;
}
Sum();
echo $b;
echo '
함수 Sum1()
{
$GLOBALS['b'] = $GLOBALS['a'] + $GLOBALS['b'];
}
Sum1();
echo $b;
인용문: PHP에서 전역 변수는 해당 함수에서 사용되려면 함수 내에서 전역으로 선언되어야 합니다
이러한 변수가 함수에 사용되는 경우 해당 함수에 전역 변수를 정의해야 합니다. 이렇게 하면 많은 문제를 피할 수 있습니다.
자세히 보기
7.reference(reference)
variable_reference.php
코드 복사
번역: 클래스의 속성이나 메서드를 정적으로 정의하면 클래스를 초기화하지 않고도 직접 액세스할 수 있습니다. static으로 정의된 속성은 개체 연산자 * -> *를 사용하여 클래스의 개체에서 액세스할 수 없습니다(정적 메서드를 통해 액세스할 수 있음).
설명 예:
7행과 10행은 동일한 실수를 범했습니다. 첫 번째는 객체 연산자를 사용하여 정적 변수에 액세스하는 것입니다. 정의를 보면 $this는 인스턴스인 object에 해당하는 의사 변수입니다. 개체 연산자 ->를 사용하여 액세스하면 오류가 보고됩니다.마찬가지로 정적 연산자 ::를 사용하여 공용 변수에 액세스할 수 없습니다. 올바른 액세스는 14행과 25행이어야 하며, 하나는 클래스 정의(self:: === Trones::)에서 액세스되고, 다른 하나는 클래스 외부에서 액세스됩니다.
상속된 클래스의 경우 위의 규칙도 적용됩니다.
2.치명적인 오류: 개인 메소드 호출
최근 왕좌의 게임이라는 매우 흥미로운 TV 시리즈가 있습니다. 3개의 정당, 7명의 왕, 평민, 용의 여인이 있다고 가정합니다. 세 사람은 최종 승리, 즉 왕관을 놓고 치열한 경쟁을 펼쳤다.다음 스토리에도 제목이 있습니다: Class visible(가시성) 최종 답변을 알고 계시다면 설명 부분을 건너뛰셔도 됩니다.
코드 복사