PHP Tutorial(3)

김학범·2022년 11월 1일
0

php_study

목록 보기
3/3

array

  • 배열은 한 번에 둘 이상의 값을 보유할 수 있는 특수 변수이다.
  • array() 함수를 사용
  • php에는 세 가지 유형의 배열이 있다.
  • 인덱스 배열, 연관 배열, 다차원 배열
<?php
	$var = array("baclk", "ABCDE", "information");
    
?>

count()

배열의 길이 가져오는 함수이다.

<?php
	$var = array("baclk", "ABCDE", "information", "home", "HACK");
  echo count($var);
?>

Index Arrays - 인덱스 배열

인덱스 배열을 만드는 방법에는 두 가지 방법이 있다.
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];
?>

Associative Arrays - 연관 배열

<?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/>";
  }
?>

Multidimensional Arrays - 다차원 배열

다차원 배열이란 하나 이상의 배열을 포함하는 배열이다.

아래는 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/>";
?>

Sorting Arrays - 정렬 배열

  • sort()- 배열을 오름차순으로 정렬
  • rsort()- 배열을 내림차순으로 정렬
  • asort()- 연관 배열을 값에 따라 오름차순으로 정렬
  • ksort()- 키에 따라 연관 배열을 오름차순으로 정렬
  • arsort()- 연관 배열을 값에 따라 내림차순으로 정렬
  • krsort()- 키에 따라 연관 배열을 내림차순으로 정렬

sort()

  • 오름차순으로 정렬
<?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>";
}
?>

rsort()

  • 내림차순으로 정렬
<?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>";
}
?>

asort()

  • 값에 따라 연관 배열을 오름차순으로 정렬
<?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>";
  }
?>

Global Variables - Superglobals

범위에 관계없이 항상 엑세스 가능하며 특별한 작업을 수행하지 않고도 모든 함수, 클래스 또는 파일에서 액세스 가능합니다.
아래는 슈퍼글로벌 변수 모음입니다.

<?php
	$GLOBALS
    $_SERVER
    $_REQUEST
    $_POST
    $_GET
    $_FILES
    $_ENV
    $_COOKIE
    $_SESSION
?>

$GLOBALS

php는 $GLOBALS[index] 라는 배열에 모든 전역 변수를 저장합니다.
인덱서는 변수의 이름을 보유합니다.
아래는 예시 입니다.

<?php
  $a = 17;
  $b = 80;

  function add() // 변수 a + b 를 k변수에 할당 하는 함수
  {
    $GLOBALS['k'] = $GLOBALS['a'] + $GLOBALS['b'];
  }
  
  add();
  echo $k;
?>

$_SERVER

$_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를 반환합니다.

$_REQUSET

PHP $_REQUEST는 HTML 양식을 제출한 후 데이터를 수집하는 데 사용되는 php 슈퍼 전역 변수입니다.

$_GET and $_POST

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 파라미터 값 출력 )

Regular Expressions

정규표현식

Syntax

<?php
	$exp = "/money/"i;
    // 위의 예시에서 /는 구분 기호이고 money는 검색중인 패턴이며 검색을 대소문자를 구분하지 않도록 하는 i는 수정자입니다. 
?>

구분 기호는 문자, 숫자, 백슬래시 또는 공백이 아닌 모든 문자일 수 있습니다.
가장 일반적인 구분 기호는 슬래시(/)이지만 패턴에 슬래시가 포함된 경우 # 또는 ~와 같은 다른 구분 기호를 선택하는 것이 편리합니다.

	$exp = "showmethemoney"/i"

정규식 함수

<?php
  perg_match() // 문자열에서 패턴이 발견되면 1을 반환 발견되지 않으면 0을 반환합니다.
  preg_match_all() //  문자열에서 패턴이 발견된 횟수를 반환합니다.
  preg_replace() // 일치하는 패턴이 다른 문자열로 바뀐 새 문자열을 반환합니다.
?>

perg_match()

<?php
$str = "black sheep wall";
$pattern = "/wall/i";
echo preg_match($pattern, $str);
?>

preg_match_all()

<?php
$str = "show me the money, operation cwal, black sheep wall";
$pattern = "/show/i";
echo preg_match_all($pattern, $str);
?>

preg_replace()

<?php
$str = "show me the money";
$pattern = "/money/i";
echo preg_replace($pattern, "NO", $str); //
?>

profile
개똥멍청이에서 멍청이로 전직하고싶은 노예

0개의 댓글