strncmp
- 두 문자의 사전적 순서(크기 비교)를 할 때 사용하는 점에서는 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, $str2, 5); $res7 = strncmp($str1, $str2, 7); 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)
$str2 = “hello oursmalljoy”
strncmp($str1, $str2, 5) 출력값
int(0)
strncmp($str1, $str2, 7) 출력값
int(1)
Pingback: PHP 목차 ⋆ Our Small Joy