블로그 > 행복이네 집 http://blog.naver.com/prebetty79/100028415343 | |
폼변수 다루기 폼변수 PHP 스크립트에서 폼 필드 값은 PHP 변수처럼 접근 할수 있다. 3가지 방법이 있다. ex) $tireqty //짦은 스타일 $_POST['tireqty'] // 중간 스타일 $HTTP_POST_VARS['tireqty'] // 긴 스타일 1. 짧은 스타일 : register_globals를 활성화 시켜야 쓸수 있다. (비추천) 지역변수와 혼란을 야기 한다. 4.2.0이후로 비활성화 되어있다. 2. 중간 스타일 : 추천되는 방식(4.1.0이후에서만 가능) 3. 긴 스타일 : 지양되어 왔다. 모든 버전에서 사용할수 있어 이식성은 높다. 성능에 좋지 않다. registre_long_arays로 비활성화 할수 있다.
식별자(Identifier) dfe - 식별자는 변수의 이름을 말한다. - 길이 제한은 없으며 문자,숫자,'_', '$'로 만들 수 있다. - '$'는 가변변수때문에 조심해서 사용해야 한다. - 숫자는 매 앞에 올수 없다. - 대소문자를 구분한다.
변수형 : 변수의 형(type)은 저장된 데이터의 종류에 따라 정해진다. 기본데이터형 ■ Integer : 모든 숫자 ■ Float ■ String ■ Boolean ■ Array ■ Object
이 외에 NULL형과 resource형(외부자원 ex DB연결)이 있다.
형 강도(Type Strength) PHP는 형 강도가 매우 약한다. 변수에 저장된 값에 따라 형이 결정된다. $a = 0; $a = 0.00; // $a는 처음엔 정수형이였다가 실수형으로 바뀐다. $a = 'Hello'; // 이것도 가능하다 이제 $a는 문자열이다
가변 변수(variable varialbes) : 가변변수를 사용하면 변수의 이름을 동적으로 바꿀수있다. ex) $varname = 'b'; $$varname = 5;
위는 $b = 5 와 하는 것과 동일하다.
상수 - 상수는 define 함수를 사용하여 상수를 정의한다. ex) define('TIREPRICE' , 100); define('OILPRICE', 10); define('SPARKPRICE', 4); - 상수의 사용 : 변수는 $를 붙이지만 상수는 상수의이름만 적어주면 된다. ex) echo TIREPRICE; 변수의 범위(scope) 6개의 범위를 가지고 있다. - 수퍼글로벌 변수는 스크립트 전역에서 사용할 수 있다. - 한번 선언된 상수는 스크립트 전역에서 사용할 수 있다. 즉 함수의 안과 밖 모두에서 사용할 수 있다. - 전역변수는 스크립트 내에서 정의된 변수로 스크립트 내에서 사용할 수 있지만, 함수 안에서는 사용할 수 없다. - 함수 안에서 정의된 변수는 함수 내에서만 사용할 수 있다. - 함수 안에서 전역으로 정의된 변수는 함수 밖에서는 사용할 수 없지만 매 사용 시마다 값이 저장되어 다음에 사용할 수 있다 ??? - 함수 안에서 사용된 변수는 함수가 끝나면 삭제된다. 수퍼글로벌 전체 리스트 - $GLOBALS - $_SERVER - $_GET - $_POST - $COOKIES - $_FILES - $_ENV - $_REQUEST - $_SESSION Operation(연산자) 대부분 C, Java랑 비슷하고 틀린부분만 정리 - 문자열 연산자 '.' : 문자열을 앞뒤로 붙여서 새로운 문자열을 만든다. ex) $a = "Bob's"; $b = 'Auto Parts'; $result = $a.$b; 결과 $result에 저장된 값은 "Bob's Auto Parts"이다. - 산술 연산자 : 산술 연산자의 operand(피연산자)는 정수와 실수형으로만 쓰일 수 있다. 만약 문자열로 산술연산을 시도한면 문자열을 숫자로 바꾸어서 실행한다. 문자열에 "e"나 "E"가 들어있다면 실수형으로 변화 한다. 그 외에는 정수형으로 변환. PHP는 문자열 처음에서 숫자를 찾아서 그것을 값으로 인식하는데, 만약에 문자열에 숫자가 없다면 문자열의 값은 0이 된다. - 참조 연산자(Reference) : C의 &연산자와 같음.. ex) $a = 5 $b = $a; --> $a, $b 서로 다른 메모리 영역을 가진다. $a = 5; $b = &a; &b = 7 // $a, $b 서로 같은 메모리영역을 가진다 즉 $a, $b가 7 unset($a) : 서로의 참조를 다르게 한다 (관계를 떼어놓을 수 있다) - 비교연산자(Comparison Operatiors) identical operator (===) : 두 피연산자가 값이 같고 같은형일 때만 true를 리턴한다. Not Identical (!==) : != 와는 다르다 Not Equal (<>) : 같지 않다. (!=) 와 같이 동일한 의미로 쓰인다. - 에러 억제 연산자(error suppression operator) : @ : '@'은어떠한 표현식에도 쓸수 있다. ex) $a = @(57/0) '@'가 없다면 위 문장은 "0으로 나누기"에 의한 에러가 발생하지만 '@'를 앞에 써주어서 에러는 무시하고 넘어간다. 만약 이런 방식으로 억제한다면 에러를 처리하는 코드를 작성해야 한다. 만약 PHP에서 track_error를 설정해 놓았다면 에러메시지를 전역변수인 $PHP_erromsg에 저장한다. - 실행 연산자(execution operation) : '`' 와 '`'로 이루어진 한 쌍의 연산자로 '`'는 홑따옴표(')와는 다른 키보드 ~아래에 있다. PHP에서 서버의 커맨드 라인에서 실행하고 싶은 것이 있다면 `` 사이에 명령어를 쓰면된다. 그러면 ``의결과값이 표현식의 리턴값이 된다. EX) 유닉스 환경 @out = `ls -la`; echo '<pre>'.$out.'</pre>'; 그러면 시 디렉토리의 파일 리스트가 보이게 된다.
- 배열 연산자 + | $a + $b | $a와 $b가 가지고 있는 모든값을 반환한다(합집합) == : $a, $b가 같은 요소를 가지고 있으면 true === | $a, $b가 같은 요소를 같은 순서로 가지고 있으면 true != <> !== 변수와 관련된 함수 - 변수의 데이터 형을 검사하고 설정하기
string gettype(mixed var); : 'boolean", "integer", "double", "string", "array", "object", "resource", 혹은 NULL을 반환한다. 표준 데이터 형이 아니면 "unknown"을 반환 bool settype(mixed var, string type); ■ is_array() ■ is_double(), is_float(), is_real() (모두 같은 함수) ■ is_long(), is_int(), is_integer() (모두 같은 함수) ■ is_string() ■ is_object() ■ is_null() ■ is_scalar() - 변수가 스칼라 변수인지 확인한다. 즉 정수형, 불리어형, 문자열이나 실수형인지 확인한다. ■ is_numeric() - 변수가 숫자나 혹은 숫자 문자열인지 확인한다. ■ is_callable() - 변수에 저장된 값이 호출할 수 있는 함수의 이름인지 확인한다. - 변수 상태 검사 boolean isset(mixed var); : 이 함수는 변수의 이름을 인자로 받아서 만약 이 변수가 존재한다면 true를 반환한다. , 로 연결된 변수들을 주면 모든 변수가 존재해야 true를 반환 boolean unset(mixed var); : 인자로 받은 변수의존재 자체를 없애고 true를 반환한다. empty(mixed var); : 변수가 존재하고, 비어 있지 않으며, 0이 아닌값을 가지고 있다면 true를 리턴
- 변수형 변환 int intval(mixed var[, int base]); base :진수 (10, 2, 16) float floatval(mixed var); string strval(mixed var);
== 제어문 == 대부분 C와 비슷하지만, 틀린점만 요약하면
1. else if --> elseif 와 같이 붙여서 쓴다 2. 루프를 빠져나갈때 'continue', 'break' 이외에 'exit' 라는 제어문이 있다. 'exit' : 루프를빠져나가 PHP 스크립트를 완전히 끝낸다. 3. 대체 제어 구조 { } 로 구역을 정하는 것이 아니라 '{' 대신에 ':' 를 쓰고, '}' 대신에 사용한 제어구조에 따라, endif, endswitch, endwhile, endfor, endforeach를 쓸수있다. ex) if( $totalqty == 0 ) { echo 'You did not ... '; exit; } 를 아래와 같이 쓸수 있다. if( $totalqty == 0 ) : echo 'You did not ... '; exit; endif 4. declare declare (directive) { // block } 이 구조는 코드 블록에서 실행 지침(execution directive)를 설정하기 위해 사용된다. 단 하나의 실행 지침인 tricks 만이 구현되어있는데 tricks=n이라는 방식으로 지침을 삽입할 수 있다. 코드 블록내에 있는 특정 함수 중 n개의 코드 행을 실행 시킬 수 있어 디버깅에 매우 유용한다. |
0