PHP strncmp 작동 원리


strncmp

[PHP 목차 보기]

  • 두 문자의 사전적 순서(크기 비교)를 할 때 사용하는 점에서는 strcmp 함수[참고 1]와 strcasecmp 함수[참고 2]와 비슷하다.
  • 차이점은 strncmp는 첫 문자열 n개의 갯수만을 비교한다는 점이다.
  • str은 string을, n은 갯수, cmp는 comparison을 뜻한다.
strncmp($string1, $string2, n)
- 첫 번째 인자 자료형: string
- 두 번째 인자 자료형: string
- 반환 자료형: int
  • 0을 반환: 비교 문자열이 같으면 0을 반환한다.
  • 음수 반환: 첫 번째 인자의 문자열이 작으면 (사전적 순서가 앞) 음수를 반환한다.
  • 양수 반환: 첫 번째 인자의 문자열이 크면 (사전적 순서가 뒤) 양수를 반환한다.

예제

  • 아래 코드에서는, 첫 문자 5개($res5)와 첫 문자 7개($res7)의 비교를 하는 예제이다.
  • $res5: 첫 문자 5개는 $str1과 $str2 모두 ‘hello’으로 일치한다. 따라서 strncmp의 반환값은 정수 0이 된다.
  • $res7: 첫 문자 7개의 경우, $str1는 ‘hello w’이고, $str2는 ‘hello o’이므로 서로 다르다. 두 문자열이 다른 값을 가지는 첫 문자는 ‘w’와 ‘o’이고, 아스키 값은 w = 119이고, o = 111이기 때문에 양수를 반환한다.
  • 주의 할 점은, 반환값 숫자는 운영체제마다 다르다. 현재 예제는 Windows 운영체제를 쓰고 있는데 반환값이 +1이 나왔다. (Linux도 아마도 +1이 반환 될 것이다.) 맥 OS에서는 반환값이 2048이 나올 것이다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
    $str1 = “hello world”;
    $str2 = “hello oursmalljoy”;
 
    $res5 = strncmp($str1$str25);
    $res7 = strncmp($str1$str27);
 
    echo ‘$str1 = “hello world”<br>’;
    echo ‘$str2 = “hello oursmalljoy”<br><br>’;
    echo ‘strncmp($str1, $str2, 5) 출력값<br>’;
    var_dump($res5);
 
    echo ‘<br><br>’;
    echo ‘strncmp($str1, $str2, 7) 출력값<br>’;
    var_dump($res7);
?>
cs
$str1 = “hello world”
$str2 = “hello oursmalljoy”

strncmp($str1, $str2, 5) 출력값
int(0)

strncmp($str1, $str2, 7) 출력값
int(1)

참고
[1] strcmp 함수
[2] strcasecmp 함수

[PHP 목차 보기]

1 thought on “PHP strncmp 작동 원리”

  1. Pingback: PHP 목차 ⋆ Our Small Joy

Leave a Reply