티스토리 뷰

PHP

PHP 문자열 비교

블로그 강승 2021. 3. 31. 10:41

PHP 문자열 비교

문자열을 등호로 비교할때는 보통 사전에서 문자열이 나타나는 순서를 비교하는데, 먼저 나온 문자열이 나중에 나온 문자열 보다 '작다'고 판단한다.

if ($word< 'baa'){
	preint "이 단어는 cookie가 아닙니다.";
}
if ($word >= 'zoo'){
	print "이 단어는 zoo이거나 zymurgy일 수 있지만 zone은 아닙니다.";
}

전부 숫자로 이루어진 문자열이나 숫자로 시작하는 문자열을 비교할 때는 예측과 다른 결과가 나올 수도 있다. PHP엔진은 이러한 문자열을 발견하면 문자열을 숫자로 변환해 비교한다.
아래는 비교 과정에서 자동으로 변환이 일어나는 사례다.

// 사전 순서로 비교
if ("x54321" > "x5678") {
	print '문자열 "x54321"은 문자열 "x5678"보다 크다.';
}else{
		print '문자열 "x54321"은 문자열 "x5678"보다 크지 않다.';
}

//숫자 순서로 비교
if ("54321" > "5678"){
	print '문자열 "54321"은 문자열 "5678"보다 크다.';
}else{
	print '문자열 "54321"은 문자열 "5678"보다 크지 않다.';
}

// 사전 순서로 비교
if('6 pack' < '55 card stud'){
	print '문자열 "6 pack"은 문자열 "55 card stud"보다 작다.';
} else{
	print '문자열 "6 pack"은 문자열 "55 card stud"보다 작지 않다.';
}

// 숫자 순서로 비교
if ('6 pack' <55) {
	print '문자열 "6 pack"은 숫자 55보다 작다.';
}else{
	print '문자열 "6 pack"은 숫자 55보다 작지 않다.';
}

/* 출력화면
문자열 "x54321"은 문자열 "x5678"보다 크지 않다.
문자열 "54321"은 문자열 "5678"보다 크다.
문자열 "6 pack"은 문자열 "55 card stud"보다 작지 않다.
문자열 "6 pack"은 숫자 55보다 작다.

첫번째 if문은 비교하는 양쪽 문자열이 문자와 숫자로 이루어젔기 때문에 사전 순서로 비교하는데,
x5까지는 같으므로 4와 6중에 4가 사전에 먼저 등록되어있기에 x54321이 더 작다.

두번째 if문은 양쪽다 숫자로만 되어있기 때문에 숫자로 변형해서 숫자크기 비교를해서, 54321이 더크다.

세번쨰 if문은 양쪽다 숫자와 문자로 이루어진 문자열이어서 사전에 등록된 순서로 비교하는데,
6보다 5가 사전에 더 빨리나오니 ,55 card stud가 더 작다.

마지막 if문은 한쪽이 숫자여서 6 pack을 숫자로 변형해, 6이되어 6과 55의 숫자크기 비교를해서 55가 더크다.

'PHP' 카테고리의 다른 글

PHP strcasecmp() 함수  (0) 2021.03.31
PHP strcmp()함수, 우주선 연산자<=>  (0) 2021.03.31
PHP 변수명을 중괄호로 감싸기  (0) 2021.03.31
PHP 진위값  (0) 2021.03.31
PHP 변수의 요소(사용 가능한 변수명)  (0) 2021.03.30
댓글