2010-12-16 3 views
4

왜 출력이 'in'입니까?PHP 비교 '=='문제

<?php 
    if (1=='1, 3') 
    { 
     echo "in"; 
    } 
?> 
+0

달성하려는 작업은 무엇입니까? – raRaRa

+3

http://php.net/manual/en/language.operators.comparison.php –

답변

3

PHP는 type conversion을 수행하고 있기 때문에 문자열이 정수로 바뀌고 숫자가 아닌 값까지 모든 숫자가 계산되도록 작업을 수행하는 방법입니다. 귀하의 경우 그것은 부분 문자열 ('1')입니다 (왜냐하면 ,이 첫 번째 비 숫자 문자이기 때문입니다). 당신이 문자열이 숫자 아무것도하지만 시작하면 0

-1

출력 같아야 PHP 설명서에서

in 

:

정수를 문자열로 변환, PHP 번까지의 문자열 하나 개 특성 분석 숫자가 아닌 문자를 찾습니다. 숫자는 (선택적으로 + 또는 - 기호로 시작) 일 수 있습니다. 결과 숫자는 10 진수 (기본 -10)로 구문 분석됩니다. 에 실패 유효한 진수가 반환 값 0

+1

질문은 "왜?" – thejh

+1

나는 downvotes를 이해하지 않는다. : -s –

+0

+1 효과를 왜 발생했는지 설명했기 때문에 -1을 취소하십시오. (적어도 관련 정보가 있습니다.) – ircmaxell

0

난 당신이 변수가 값의 범위에 있는지 여부를 알고 싶어 같은데요 구문 분석합니다.

당신은 in_array을 사용할 수 있습니다 : 당신은 문자열과 정수를 비교하는

if (in_array(1, array(1, 3, 5, 6))) 
echo "in"; 
0
if(in_array(1, array(1,3)) { 
    echo "in"; 
} 
4

. 먼저 문자열을 정수로 변환해야하며 PHP는 숫자 문자열을 정수로 변환합니다. 그 문자열의 시작은 '1'이기 때문에 숫자 1과 숫자 1을 비교합니다.

어떤 기능을 사용하셨습니까?

+0

"==="(identity 비교) 그는 유형을 비교했을 것입니다. – Secko

1

당신이 1 일 또는 동일 여부를 확인하려는 경우 3, 나는 확실히 이런 식으로 할 것 :

if (1 == 1 || 1 == 3) 
5

== 운영자는 그들이 같은 유형으로 가려고 두 값에 변환을 입력한다. 귀하의 예제에서 그것은 두 번째 값을 문자열에서 정수로 변환 할 것이며, 이는 1과 같습니다. 이것은 분명히 일치하는 값과 같습니다.

첫 번째 값이 정수가 아닌 '1'의 따옴표 안에있는 문자열 인 경우 양측이 문자열이기 때문에 일치가 실패한 것이므로 문자열 비교를 수행하고 다른 문자열입니다 .

타입 변환을하지 않는 완전 일치 연산자가 필요하다면 PHP는 당신이 찾고있는 것일 수도있는 tripple-equal 연산자 인 ===을 제공합니다.

희망이 있습니다.