현재 위치: > 최신 기사 목록> Stripos가 스위치 문에 사용하기에 적합합니까?

Stripos가 스위치 문에 사용하기에 적합합니까?

M66 2025-06-02

PHP 프로그래밍에서 Stripos 함수는 매우 일반적인 문자열 조작 기능입니다. 문자열이 먼저 다른 문자열로 나타나는 위치를 찾는 데 사용되며 대소 ​​문자를 사용하지 않습니다. 사용량은 일반적으로 다음과 같습니다.

 stripos($haystack, $needle);

$ haystack 이 검색 할 문자열이고 $ 니들은 당신이 찾고있는 부분 문자열입니다. $ 니들이 발견되면 $ haystack 에서 하위 문자열의 위치를 ​​반환하고 그렇지 않으면 False가 반환됩니다.

1. Stripos와 Switch 문의 호환성

스위치 문은 일련의 가능한 분기 판단을 수행하는 데 사용되며, 일반적으로 상수, 숫자 또는 문자열의 정확한 일치에 의존합니다. PHP 전통적인 스위치 문은 Stripos를 사용하여 문자열 일치를 직접 지원하지 않습니다.

이 간단한 코드 예제를 고려하십시오.

 <?php
$searchString = "Hello World";

switch (stripos($searchString, "hello")) {
    case 0:
        echo "Found 'hello' at the start!";
        break;
    case false:
        echo "'hello' not found!";
        break;
    default:
        echo "Found 'hello' at position " . stripos($searchString, "hello");
}
?>

이 코드가 제대로 작동 할 수 있습니까?

표면에서는 Stripos가 정수 ( 서브 스트링의 위치를 ​​나타내는) 또는 False를 반환하기 때문에 제대로 작동하는 것 같습니다. 그러나 실제로 몇 가지 문제가 있습니다.

2. 잠재적 인 문제

2.1 스위치 의 변환 유형 변환

스위치 문은 조건을 판단 할 때 유형 변환을 수행합니다. 즉, Stripos가 0과 같은 정수를 반환하면 (하위 문자열이 문자열의 시작 부분에 있음을 의미합니다) False 로 처리됩니다. PHP에서 0은 부울 거짓으로 간주되므로 스위치 명령문에서 사례 0 : Case False 와 충돌하여 올바르게 일치하지 않을 수 있습니다.

구체적으로, stripos 에 의해 반환 된 0은 스위치 에 의해 부울 거짓 으로 변환되며, 이는 조건부 지점 판단 오류로 이어질 것입니다.

2.2 함정을 피하는 방법

이 문제를 피하기 위해 명시 적 유형 검사를 사용하여 Stripos가 반환 한 값이 혼란스럽지 않도록 할 수 있습니다. 예를 들어, 엄격한 비교에 ===를 사용할 수 있거나 먼저 Stripos가 False를 반환 한 다음 지점 판단을 결정할 수 있습니다.

개선 된 버전은 다음과 같습니다.

 <?php
$searchString = "Hello World";

$position = stripos($searchString, "hello");

if ($position === false) {
    echo "'hello' not found!";
} elseif ($position === 0) {
    echo "Found 'hello' at the start!";
} else {
    echo "Found 'hello' at position " . $position;
}
?>

3. 요약

스위치는 유형 변환을 수행하고 Stripos 에 의해 반환 된 0은 False 로 오인되어 판단 오류가 발생하기 때문에 StripoS는 스위치 문에서 직접 사용할 수 없습니다. 이 문제를 피하려면 스위치 대신 IF 문을 사용하고 엄격한 유형 비교를 수행하는 것이 좋습니다.