- 배열은 한 번에 둘 이상의 값을 보유할 수 있는 특수 변수이다.
- array() 함수를 사용
- php에는 세 가지 유형의 배열이 있다.
- 인덱스 배열, 연관 배열, 다차원 배열
<?php
$var = array("baclk", "ABCDE", "information");
?>
배열의 길이 가져오는 함수이다.
<?php
$var = array("baclk", "ABCDE", "information", "home", "HACK");
echo count($var);
?>
인덱스 배열을 만드는 방법에는 두 가지 방법이 있다.
1. 인덱스를 수동으로 할당
2. 인덱스를 자동으로 할당 (인덱스는 항상 0부터 시작)
<?php
$var[0] = "baclk";
$var[1] = "ABCDE";
$var[2] = "information";
$var[3] = "home";
$var[4] = "HACK";
echo $var[0].$var[1].$var[2].$var[3].$var[4];
?>
<?php
$var = array("Kim", "sky", "SELET");
echo $var[0].$var[1].$var[2];
?>
<?php
$var = array("Kim" => "TOP", "sky" => "MID", "ppap" => "BOT");
echo $var["Kim"]."<br>".$var["sky"]."<br>".$var["ppap"];
?>
<?php
$var = array(
"Password" => "1q2w3e4r!",
"디렉터리 삭제 명령어" => "rm -rf",
"사용자 계정정보가 있는 파일" => "/etc/passwd"
// $key => $value
);
// foreach문은 배열의 원소나 객체의 프로퍼티 수만큼 반복하여 동작하는 구문이다.
foreach ($var as $key => $value)
{
echo $key." : ".$value."<br/>";
}
?>
다차원 배열이란 하나 이상의 배열을 포함하는 배열이다.
아래는 2차원 배열의 코드이다.
<?php
$Menu = array(
array("라면", 5000, 12),
array("김밥", 3500, 17),
array("쫄면", 6000, 5),
array("튀김", 3000, 20)
);
// $Menu = array(array("라면", 5000, 12),array("김밥", 3500, 17),array("쫄면", 6000, 5),array("튀김", 3000, 20));
echo $Menu[0][0]. " 의 가격은" .$Menu[0][1]. " 이고, 판매량은 " .$Menu[0][2]. " 입니다.<br/>";
echo $Menu[1][0]. " 의 가격은" .$Menu[1][1]. " 이고, 판매량은 " .$Menu[1][2]. " 입니다.<br/>";
echo $Menu[2][0]. " 의 가격은" .$Menu[2][1]. " 이고, 판매량은 " .$Menu[2][2]. " 입니다.<br/>";
echo $Menu[3][0]. " 의 가격은" .$Menu[3][1]. " 이고, 판매량은 " .$Menu[3][2]. " 입니다.<br/>";
?>
- sort()- 배열을 오름차순으로 정렬
- rsort()- 배열을 내림차순으로 정렬
- asort()- 연관 배열을 값에 따라 오름차순으로 정렬
- ksort()- 키에 따라 연관 배열을 오름차순으로 정렬
- arsort()- 연관 배열을 값에 따라 내림차순으로 정렬
- krsort()- 키에 따라 연관 배열을 내림차순으로 정렬
<?php
$cars = array("Volvo", "BMW", "Toyota");
sort($cars);
$var = count($cars); //배열안에 있는 값 개수를 var 변수에 할당
for($x = 0; $x < $var; $x++) { // x변수 값을 0으로 초기화, $x 변수가 $var 변수보다 작을 동안 반복한다. 증감값
echo $cars[$x];
echo "<br>";
}
?>
<?php
$cars = array("Volvo", "BMW", "Toyota");
rsort($cars);
$var = count($cars); //배열안에 있는 값 개수를 var 변수에 할당
for($x = 0; $x < $var; $x++) { // x변수 값을 0으로 초기화, $x 변수가 $var 변수보다 작을 동안 반복한다. 증감값
echo $cars[$x];
echo "<br>";
}
?>
<?php
$A = array("pp" => "35", "oo" => "100", "hh" => "10");
asort($A);
foreach($A as $x => $x_value)
{
echo "Key= " .$x. ", Value= " .$x_value;
echo "<br>";
}
?>
범위에 관계없이 항상 엑세스 가능하며 특별한 작업을 수행하지 않고도 모든 함수, 클래스 또는 파일에서 액세스 가능합니다.
아래는 슈퍼글로벌 변수 모음입니다.
<?php
$GLOBALS
$_SERVER
$_REQUEST
$_POST
$_GET
$_FILES
$_ENV
$_COOKIE
$_SESSION
?>
php는 $GLOBALS[index] 라는 배열에 모든 전역 변수를 저장합니다.
인덱서는 변수의 이름을 보유합니다.
아래는 예시 입니다.
<?php
$a = 17;
$b = 80;
function add() // 변수 a + b 를 k변수에 할당 하는 함수
{
$GLOBALS['k'] = $GLOBALS['a'] + $GLOBALS['b'];
}
add();
echo $k;
?>
$_SERVER는 헤더, 경로 및 스크립트 위치에 대한 정보를 보유하는 PHP 슈퍼 전역 변수입니다.
<?php
echo "해당 서버의 HOST는 ".$_SERVER['HTTP_HOST']." 입니다 <br/>";
echo "해당 서버의 User-Agent는 ".$_SERVER['HTTP_USER_AGENT']." 입니다. <br/>";
echo "해당 서버의 이름은 ".$_SERVER['SERVER_NAME']." 입니다. <br/>";
?>
Element/Code Description
$_SERVER['PHP_SELF'] 현재 실행 중인 스크립트의 파일 이름을 반환합니다.
$_SERVER['GATEWAY_INTERFACE'] 서버에서 사용 중인 CGI 버전을 반환합니다.
$_SERVER['SERVER_ADDR'] 호스트 서버의 IP주소를 반환합니다.
$_SERVER['SERVER_NAME'] 호소트 서버의 이름을 반환합니다. (ex: www.naver.com)
$_SERVER['SERVER_SOFTWARE'] 서버 식별 문자열을 반환합니다. (ex: Apache/2.2.24)
$_SERVER['SERVER_PROTOCOL'] 정보 프로토콜의 이름 및 수정본을 반환합니다. (ex: HTTP/1.1)
$_SERVER['REQUEST_METHOD'] 페이지에 액세스하는데 사용된 요청 메소드를 반환합니다. (ex: POST)
$_SERVER['REQUEST_TIME'] 요청 시작의 타임스탬프를 반환합니다. (ex: 1377687496)
$_SERVER['QUERY_STRING'] 쿼리 문자열을 통해 페이지에 액세스할 경우 쿼리 문자열을 반환합니다.
$_SERVER['HTTP_ACCEPT'] 현재 요청에서 Accept 헤더를 반환합니다.
$_SERVER['HTTP_ACCEPT_CHARSET'] 현재 요청에서 Accept_Charset 헤더를 반환합니다. (ex: utf-8,ISO-8859-1)
$_SERVER['HTTP_HOST'] 현재 요청에서 호스트 헤더를 반환합니다.
$_SERVER['HTTP_REFERER'] 현재 페이지의 전체 URL을 반환합니다 (일부 사용자 에이전트가 지원하지 않으므로 신뢰할 수 없음)
$_SERVER['HTTPS'] 서버의 요청이 HTTP에서 이뤄지는지 HTTPS에서 이뤄지고 있는지 확인
$_SERVER['REMOTE_ADDR'] 사용자가 현재 페이지를 보고 있는 IP 주소를 반환합니다.
$_SERVER['REMOTE_HOST'] 사용자가 현재 페이지를 보고 있는 호스트 이름을 반환합니다.
$_SERVER['REMOTE_PORT'] 웹 서버와 통신하기 위해 사용자 컴퓨터에서 사용 중인 포트를 반환합니다.
$_SERVER['SCRIPT_FILENAME'] 현재 절대 경로 이름을 반환합니다. ex:ecuting script
$_SERVER['SERVER_ADMIN'] 웹 서버 구성 파일의 SERVER_ADMIN 지시문에 지정된 값을 반환합니다. (스크립트가 가상 호스트에서 실행되는 경우 해당 가상 호스트에 대해 정의된 값이 됩니다.)
$_SERVER['SERVER_PORT'] 웹 서버가 통신에 사용하는 서버 컴퓨터의 포트를 반환합니다. (ex: 80)
$_SERVER['SERVER_SIGNATURE'] 서버 생성 페이지에 추가된 서버 버전 및 가상 호스트 이름을 반환합니다.
$_SERVER['PATH_TRANSLATED'] 파일 시스템 bed 경로를 현재 스크립트로 반환합니다.
$_SERVER['SCRIPT_NAME'] 현재 스크립트의 경로를 반환합니다.
$_SERVER['SCRIPT_URI'] 현재 페이지의 URI를 반환합니다.
PHP $_REQUEST는 HTML 양식을 제출한 후 데이터를 수집하는 데 사용되는 php 슈퍼 전역 변수입니다.
GET은 select적인 성향을 가지고 있기 때문에 어떤 데이터를 가져와서 보여준다거나 하는 용도이지 서버의 값이나 상태등은 바꾸지 않습니다. (ex: 게시판 리스트, 글보기 기능 등)
POST는 서버의 값이나 상태를 바꾸기 위해서 사용됩니다.
ex) 글쓰기, 로그인, 회원가입 등
requset.php
<form method='POST' action='request_ok.php'>
<input type='hidden' name='mymethod' value='POST방식'>
<input type='hidden' name='greet' value='안녕하세요'>
<button>POST 방식으로 보내기</button>
</form>
<a href='request_ok.php?mymethod=GET방식&greet=반갑습니다'>GET 방식으로 보내기</a>
requset_ok.php
<?php
<p>
greet = <?php echo (isset($_REQUEST['greet'])) ? $_REQUEST['greet'] : ''; ?>
</p>
<p>
mymethod = <?php echo (isset($_REQUEST['mymethod'])) ? $_REQUEST['mymethod'] : ''; ?>
</p>
GET과 POST의 차이점
1. 전송속도 GET > POST
2. 인코딩 방식이 다르다.
3. GET은 글자수 제한이 있고 POST는 없다.
4. GET은 보안에 취약, POST는 보안유지 ( URL 파라미터 값 출력 )
정규표현식
Syntax
<?php
$exp = "/money/"i;
// 위의 예시에서 /는 구분 기호이고 money는 검색중인 패턴이며 검색을 대소문자를 구분하지 않도록 하는 i는 수정자입니다.
?>
구분 기호는 문자, 숫자, 백슬래시 또는 공백이 아닌 모든 문자일 수 있습니다.
가장 일반적인 구분 기호는 슬래시(/)이지만 패턴에 슬래시가 포함된 경우 # 또는 ~와 같은 다른 구분 기호를 선택하는 것이 편리합니다.
$exp = "showmethemoney"/i"
<?php
perg_match() // 문자열에서 패턴이 발견되면 1을 반환 발견되지 않으면 0을 반환합니다.
preg_match_all() // 문자열에서 패턴이 발견된 횟수를 반환합니다.
preg_replace() // 일치하는 패턴이 다른 문자열로 바뀐 새 문자열을 반환합니다.
?>
<?php
$str = "black sheep wall";
$pattern = "/wall/i";
echo preg_match($pattern, $str);
?>
<?php
$str = "show me the money, operation cwal, black sheep wall";
$pattern = "/show/i";
echo preg_match_all($pattern, $str);
?>
<?php
$str = "show me the money";
$pattern = "/money/i";
echo preg_replace($pattern, "NO", $str); //
?>