나는이 같은 두 변수 :PHP는 알파벳 위치를 비교합니까?
var1 = "z";
var2 = "A";
어떻게 VAR1 (이 경우는 true를 돌려) VAR2보다 알파벳 이후 인 경우 확인할 수 있습니까? ?
나는이 같은 두 변수 :PHP는 알파벳 위치를 비교합니까?
var1 = "z";
var2 = "A";
어떻게 VAR1 (이 경우는 true를 돌려) VAR2보다 알파벳 이후 인 경우 확인할 수 있습니까? ?
나는 응답 한 모든 사람이()이 STRCMP를 동의 정답이지만, 지금까지 제공 한 모든 대답은 당신에게 잘못된 결과를 줄 것이라 생각합니다. 예 :
echo strcmp("Z", "a");
결과 : -1
echo strcmp("z", "A");
결과 : 1
STRCMP()로 각각의 문자가 아닌 문자의 위치의 이진 (ORD) 위치를 비교한다 너 욕망이야. 올바른 결과를 원한다면 비교하기 전에 문자열을 동일한 대/소문자로 변환해야합니다. 예를 들어 :
if(strcmp(strtolower($str1), strtolower($str2)) < 0)
{
echo "String 1 comes before string 2";
}
편집 : 당신은 또한 strcasecmp()를 사용할 수 있지만, 내가 피하기 위해 경향이 내가이 멀티 바이트 문자열을 이해하는 시간을 찍은 적이 없다 동작을 보여 때문이다. 모든 라틴 문자 세트를 항상 사용한다면 괜찮습니다.
당신이 시도 했는가 ... 확신이
<?php
if(strcmp($var1,$var2) > 0) {
return true;
}
당신은 http://php.net/manual/en/function.strcmp.php
반환을 사용해야 작동 < 0 str1이 str2보다 작다면, > str1이 str2보다 크면 0, 같으면 0.
그래서
return strcmp(var1, var2) > 0 // will return true if var1 is after var2
return strcmp($var1,$var2) > 0
?
한 문자를 비교하는 경우 ord(string)
을 사용할 수 있습니다. 대문자 값은 소문자보다 작은 것으로 비교되므로 비교를 수행하기 전에 char을 소문자로 변환하십시오. 당신이 문자열 (또는 문자)를 비교하는 경우
function earlierInAlphabet($char1, $char2)
{
$char1 = strtolower($char1);
$char2 = strtolower($char2);
if(ord($char1) < ord($char2))
return true;
else
return false;
}
function laterInAlphabet($char1, $char2)
{
$char1 = strtolower($char1);
$char2 = strtolower($char2);
if(ord($char1) > ord($char2))
return true;
else
return false;
}
당신은 또한 strcasecmp(str1, str2)
사용할 수 있습니다
if(strcasecmp($str1, $str2) > 0)
// str1 is later in the alphabet
이 솔루션이 될 수 이상 - 더 - 상단 두 변수; 당신이 두 변수를 함께하고 싶어하지만이 ... 당신이 변수의 무리 (2+) 올바른 순서 될 경우 해결하기 위해 이제까지 필요로하는 경우에 대한보다 다른
<?php
$var1='Z';
$var2='a';
$array1 = array();
$array[] = $var1;
$array1[] = $var2;
$array2 = sort($array1);
if($array2 === $array1){
return true;
}else{
return false;
}
?>
인이해야 잘 작동합니다.
<?php
return (strcmp($var1,$var2) > 0);
?>
+1 "올바른 결과를 원한다면 _ (당신이하는 것으로 가정합니다) _". 그리고 만약 내가 할 수있는 완전한/정답에 대한 또 다른 줄. 좋은 것. – Sepster