내장 함수(3)

minah moon·2023년 8월 9일

PHP

목록 보기
20/58
post-thumbnail

배열 정렬 함수

정렬 함수는 배열에 나열된 항목의 순서를 변경한다.

  1. 값으로 정렬하고 키 변경

다음의 함수를 사용하여 배열(인덱스 배열이든 연관 배열이든)을 정렬하면 키는 0부터 시작하는 인덱스 번호가 된다.

  • sort($array) : 값을 기준으로 오름차순
  • rsort($array) : 값을 기준으로 내림차순
  1. 값으로 정렬하고 키 유지

다음의 함수를 사용하여 배열을 정렬하면 키는 값과 함께 이동한다.

  • asort($array) : 값을 기준으로 오름차순
  • arsort($array) : 값을 기준으로 내림차순
  1. 키로 정렬하고 값 유지

다음의 함수를 사용하여 배열을 정렬하면 값은 키와 함께 이동한다.

  • ksort($array) : 키를 기준으로 오름차순
  • krsort($array) : 키를 기준으로 내림차순

상수

상수는 이름/값 쌍이며 변수처럼 동작한다. 하지만 상수는 값이 한 번 할당되면 업데이트할 수 없다.

상수는 변수와 같이 이름/값 쌍이지만

  • define(이름, 값) 로 생성된다.
    ex)
define('SITE_NAME', 'Mountain Art Supplies');
  • 상수에 값이 한번 설정되면 업데이트할 수 없다.
  • PHP 페이지 어디에서나 접근할 수 있다(함수 내부 포함).

상수명은 보유하는 데이터 유형을 설명해야 하며, 달러 기호가 아니라 문자나 밑줄로 시작해야 한다. 상숫값은 스칼라 데이터 타입 또는 배열이 될 수 있다.

상수는 키워드 const를 사용하여 상수를 생성할 수도 있으며, 키워드 뒤에 상수명, 할당 연산자, 그리고 보유해야 하는 값이 온다. 이러한 방식을 클래스 내부에 상수를 정의하는 데 사용할 수 있다(반면, define() 함수로는 할 수 없음).

const SITE_NAME = 'Mountain Art Supplies';

HTTP 헤더 추가하기 또는 업데이트하기

header() 함수는 PHP 인터프리터가 브라우저로 보내는 HTTP 헤더를 업데이트한다. 새로운 헤더를 추가할 수도 있다. 이 함수의 하나의 인수는 설정할 헤더의 이름, 콜론, 값 묶음이다.

때로는 사용자가 어떤 페이지를 요청했지만 다른 페이지로 보내야 하는 경우가 있다. 예를 들어 다음과 같은 경우다.

  • 더 이상 유효하지 않을 경우
  • 해당 페이지가 새로운 URL로 이동한 경우
  • 필요한 데이터가 누락된 경우

이 경우에 header() 함수는 세 부분으로 구성된 하나의 인수를 받는다.

  • 헤더 이름으로 Location
  • 콜론
  • 새로운 URL

브라우저가 Location 헤더를 수신하면, 새로운 URL을 요청한다. PHP 인터프리터가 이후의 PHP 코드를 더 이상 실행하지 못하도록 exit 명령어를 사용한다.

header('Location: http://www.example.com/');

대부분의 PHP 파일은 브라우저로 보낼 HTML을 생성하지만, PHP는 JSON, XML, CSS와 같은 유형의 파일을 생성하는 데 사용할 수 있다.

이렇게 하려면 header()에 다음이 필요하다.

  • 헤더 이름으로 Content-type
  • 콜론
  • 콘텐츠의 미디어 타입

이것은 브라우저에 파일의 미디어 타입을 알려주는 HTTP 헤더를 생성한다.

header('Content-type: application/json');

브라우저는 사용자가 본 페이지를 캐시(저장)할 수 있다. 만약에 사용자가 그 페이지를 다시 요청하면 파일을 다시 요청하는 대신에 저장된 페이지를 표시할 수 있다(이렇게 하면 페이지가 더 빨리 로드되는 것처럼 보인다).

브라우저에 페이지를 캐시할 수 있는 기간을 알려주려면 다음을 사용한다.

  • 헤더 이름으로 Cache-Control
  • 콜론
  • max-age=다음에 페이지를 캐시할 밀리초

ISP와 네트워크는 웹 페이지를 캐시하기 위해 프록시proxy를 사용한다. 만약에 페이지가 개인 데이터를 가지고 있다면, 밀리초 다음에 콤마, 공백, private라는 단어를 사용하여 프록시가 해당 데이터를 캐싱하지 못하게 한다. 개인 데이터가 없는 경우라면 public으로 설정한다.

header('Cache-Control: max-age=3600, public');

파일에 대한 데이터 및 파일 삭제하기

파일 함수는 매개변수로 파일 경로를 받아서 파일 및 파일 경로에 대한 정보를 반환하거나 파일을 삭제한다.

PHP에는 경로를 담는 내장 상수도 있다.

__FILE__은 현재 파일의 경로를 담는다.
__DIR__은 현재 파일의 디렉터리를 담는다.

파일 함수는 다음과 같다.

  • file_exists($path) : 파일이 존재하는지 확인한다. 존재한다면 true, 없으면 false
  • filesize($path) : 파일의 크기를 바이트 단위로 반환한다.
  • mime_content_type($path) : 파일의 미디어 유형을 반환한다.
  • unlink($path) : 파일을 삭제하려고 시도한다. 파일이 삭제되면 true, 그렇지 않으면 false
  • pathinfo($path[ , $part] ) : 파일 경로의 부분을 반환한다. 가져올 경로 부분을 지정할 수 있다. 만약에 지정하지 않는다면, 다음의 네 개의 키가 있는 배열을 반환한다.
    PATHINFO_DIRNAME : 파일이 있는 디렉터리의 경로
    PATHINFO_BASENAME : 파일의 베이스네임
    PATHINFO_FILENAME : 파일명(확장자 없음)
    PATHINFO_EXTENSION : 파일 확장자
  • basename($path) : 경로로부터 파일의 베이스네임을 반환한다.
  • dirname($path[ , $levels] ) : 지정된 파일이 위치하고 있는 디렉터리의 경로를 반환한다. $levels는 올라갈 상위 디렉터리 숫자다.
  • realpath($path) : 파일의 절대 경로를 반환한다.





출처 - 존 두켓, <백엔드 프로그래밍을 위한 PHP & MySQL>, Jpub, 2022

0개의 댓글