2012-09-12 4 views
1

PHP의 초보자입니다.
변수에 배열 인덱스 값이 나타납니다. $acc_type = $cur_account['roles']
출력을 echo $acc_type으로 출력하고 화면에 administrator을 인쇄합니다.strcmp 함수를 사용할 수 없습니다.

따라서 echo strcmp("administrator", $acc_type);을 시도한 경우 이상적으로 0을 인쇄해야하지만 실제로는 그렇지 않습니다. 대신 1이 인쇄됩니다.

왜 이러한 일이 발생하는지 이해할 수 없습니다. 주조 등을해야합니까? 내가 어디로 잘못 가고 있니?

+0

@SLAYER 출력 할 수 있었다. strcmp는 동등한 경우 0을 제공합니다. http://php.net/manual/en/function.strcmp.php – jValdron

+0

@SLAYER : int strcmp (string $ str1, string $ str2); strcmp는 str1이 str2보다 작은 경우 0을 반환하고; > str1이 str2보다 크면 0, 같으면 0. – Dev

+0

미안 내 실수 ... :) 적절한 동작 str1이 str2보다 작 으면 <0을 반환하고 그렇지 않으면 false를 반환합니다. > str1이 str2보다 크면 0, 같으면 0. –

답변

2

var_dump을 사용하여 변수의 내용을 인쇄하여 strcmp0을 반환하지 않는 이유를 확인하십시오.

var_dump은 공백 문자를 찾는 데 도움이되는 따옴표 붙은 문자열과 길이를 인쇄하여 문자열이 동일하지 않게합니다.

+0

예, var_dump 할 때'string '

  • administrator
(길이 = 80)'을 얻습니다. –

+0

글자가 왜 등가가 아닌지를 설명합니다. 귀하의 변수의 내용은 오직 발표를위한 것이거나 귀하가 잘못한 것처럼 보였습니다. 사용자의 역할을 유지하는 것이 목적이라면 HTML이 없어야합니다. – nemo

+0

예, 감사합니다! –

1

strcmp 실제로 문자열을 비교하는 기본 함수입니다. 문자열 사이의 동일성을 테스트하기 위해 == (또는보다 안전 한 ===)을 사용할 수 있습니다.

 
if ($acc_type === "administrator") { 
    // Your code 
} 

그러나 strcmp가 1을 반환하면 문자열이 분명히 동일하지 않습니다. strlen으로 문자열 길이 (선행/후행 공백 일 수 있음)를 점검해야합니다.

0

내 생각 엔 '관리자'문자열 중 하나에 공백 문자가있을 수 있습니다. strlen()을 사용하여 둘 다 동일한 길이인지 확인하십시오.

이 코드를 사용 :

<?php 

$cur_account['roles'] = 'administrator'; 
$acc_type = $cur_account['roles']; 
echo $acc_type . "<br>"; 
echo strcmp("administrator", $acc_type); 

?> 

나는이 완전히 거짓

administrator 
0 
관련 문제