Categories
PHP

PHP에서 배열을 오름차순 또는 내림차순으로 정렬하기

PHP에서 배열을 오름차순 또는 내림차순으로 정렬하는 방법을 알아보자.

1. 오름차순 정렬

배열을 오름차순으로 정렬할 때는 sort() 함수를 쓴다.

// 배열을 정의한다.
$weekdays = array("Monday", "Tuesday", "Wednesday", "Thursday", "Friday");

// 배열을 오름차순으로 정렬한다.
sort($weekdays);

// 배열 요소들을 출력한다.
foreach ($weekdays as $weekday) {
  echo $weekday . "<br>";
}

출력 결과를 보자.

Friday
Monday
Thursday
Tuesday
Wednesday

2. 내림차순 정렬

배열을 내림차순으로 정렬할 때는 rsort() 함수를 쓴다.

// 배열을 정의한다.
$numbers = array(2022, 10, 28, 7, 13, 55);

// 배열을 내림차순으로 정렬한다.
rsort($numbers);

// 배열 요소들을 출력한다.
foreach ($numbers as $number) {
  echo $number . "<br>";
}

출력 결과를 보자.

2022
55
28
13
10
7

Categories
PHP

우분투 20.04에 PHP CLI 만 별도로 설치하는 방법

우분투에 PHP 를 설치할 때 전체를 설치하지 않고 PHP CLI 만 설치하는 방법을 알아보자.

apt 의 데이터베이스를 업데이트한다.

sudo apt update

PHP CLI 의 우분투 패키지 이름은 php-cli 이다. php-cli 패키지를 설치한다.

sudo apt install php-cli

설치된 PHP 의 버전 넘버를 확인해 본다.

php -v

PHP 7.4.3 (cli) (built: Aug 17 2022 13:29:56) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.3, Copyright (c), by Zend Technologies

위와 같이 버전 넘버 뒤에 cli 라고 표시된다.

PHP CLI 에서 CLI 는 ‘Command Line Interface’ 를 의미한다.

Categories
FFmpeg

FFmpeg의 필터그래프, 체인, 필터의 개념과 상호관계

FFmpeg의 필터그래프, 체인, 필터 등의 개념과 상호관계를 살펴본다.

1. 필터그래프, 체인, 필터

FFmpeg 의 필터그래프 (filtergraph) 는 체인 (chain) 과 필터 (filter) 로 구성된다.

각 체인은 세미콜론 (;) 으로 구분된다.

-vf [in]scale=640:480[mid];[mid]fps=25[out]

2개의 체인이 사용되었다.

각 필터는 콤마 (,) 로 구분된다.

-vf scale=640:480,fps=25

scale 필터와 fps 필터가 콤마로 구분되어 있다.

2. 스트림 지정의 생략

아래 명령은 “[in]” 스트림에 scale 필터를 적용하여 “[out]” 스트림을 생성한다.

ffmpeg -i input.mp4 -vf [in]scale=640:480[out] output.mp4

“[in]” 스트림 지정을 생략하면 앞에 있는 스트림을 지정한 것으로 간주된다.

ffmpeg -i input.mp4 -vf scale=640:480[out] output.mp4

“[out]” 스트림 지정을 생략하면 뒤에 올 스트림을 지정한 것으로 간주된다.

ffmpeg -i input.mp4 -vf [in]scale=640:480 output.mp4

스트림 지정을 모두 생략할 수도 있다.

ffmpeg -i input.mp4 -vf scale=640:480 output.mp4

3. 체인이 2개 이상일 때 스트림 지정 생략

아래 명령을 살펴보자.

ffmpeg -i input.mp4 -vf [in]scale=640:480[mid];[mid]fps=25[out] output.mp4

“[in]” 스트림에 scale 필터를 적용하여 “[mid]” 라는 중간 스트림을 생성한다. “[mid]” 스트림에 fps 필터를 적용하여 “[out]” 스트림을 생성한다.

중간 스트림의 지정을 생략할 수 있다.

ffmpeg -i input.mp4 -vf [in]scale=640:480,fps=25[out] output.mp4

체인의 개수는 1개가 된다. 각 필터는 콤마로 구분한다.

“[in]” 스트림 또는 “[out]” 스트림의 지정을 생략할 수 있다. 2개 모두 지정하지 않는 것도 가능하다.

ffmpeg -i input.mp4 -vf scale=640:480,fps=25 output.mp4

Categories
PHP

PHP에서 자주 쓰이는 디렉토리 관련 함수: opendir, closedir, readdir, rewinddir

PHP에서 자주 쓰이는 디렉토리 관련 함수들에 대해 알아보자.

1. opendir() 함수와 closedir() 함수

opendir() 함수는 디렉토리 핸들을 연다. 디렉토리 핸들은 readdir() 함수 등 다른 디렉토리 관련 함수에서 사용된다.

closedir() 함수는 디렉토리 핸들을 닫는다.

$dh = opendir("/share/xtmci");    // 디렉토리 핸들을 연다.

  /* 디렉토리 관련 작업을 한다. */

closedir($dh);    // 디렉토리 핸들을 닫는다.

2. readdir() 함수

readdir() 함수는 디렉토리 핸들로부터 파일이나 디렉토리의 이름을 읽는다. 읽는 순서는 파일시스템에서 파일이나 디렉토리가 저장된 순서이다. 읽기에 실패한 경우 false 를 리턴한다.

디렉토리 안에 있는 파일이나 디렉토리를 디렉토리 엔트리 (entry) 라고 한다.

$dh = opendir("/share/xtmci");    // 디렉토리 핸들을 연다.

while (($entry = readdir($dh)) !== false) {    // 디렉토리 엔트리를 읽는다.
  echo $entry . "<br>";    // 디렉토리 엔트리를 출력한다.
}

closedir($dh);    // 디렉토리 핸들을 닫는다.

3. rewinddir() 함수

rewinddir() 함수는 디렉토리 핸들을 초기화한다. 디렉토리를 처음부터 다시 읽을 필요가 있을 때 이 함수를 쓴다. 리턴값은 없다.

$dh = opendir("/share/xtmci");    // 디렉토리 핸들을 연다.

while (($entry = readdir($dh)) !== false) {    // 디렉토리 엔트리를 읽는다.
  echo $entry . "<br>";    // 디렉토리 엔트리를 출력한다.
}

rewinddir($dh);    // 디렉토리 핸들을 초기화한다.

// 디렉토리 엔트리를 처음부터 다시 읽는다.
while (($entry = readdir($dh)) !== false) {
  echo $entry . "<br>";    // 디렉토리 엔트리를 출력한다.
}

closedir($dh);    // 디렉토리 핸들을 닫는다.