PHP中的新手。
我得到一个数组索引在我的变量中的值$acc_type = $cur_account['roles']
我正在打印输出echo $acc_type
并在屏幕上打印administrator
。无法使用strcmp函数
所以,如果我试过echo strcmp("administrator", $acc_type);
它应该理想地打印0
,但它不是;而是它正在打印1
。
我不明白为什么会发生这种情况。我需要做一个类型转换或什么?我哪里错了?
PHP中的新手。
我得到一个数组索引在我的变量中的值$acc_type = $cur_account['roles']
我正在打印输出echo $acc_type
并在屏幕上打印administrator
。无法使用strcmp函数
所以,如果我试过echo strcmp("administrator", $acc_type);
它应该理想地打印0
,但它不是;而是它正在打印1
。
我不明白为什么会发生这种情况。我需要做一个类型转换或什么?我哪里错了?
strcmp
实际上是比较字符串的基本功能。您可以使用==
(或更安全的===
)来测试字符串之间的相等性。
if ($acc_type === "administrator") { // Your code }
但是,如果strcmp返回1,那么您的字符串绝对不会相同。你应该用strlen
检查字符串长度(可能是前导空格或尾随空格?)。
我的猜测是你的一个'管理员'字符串中可能有一个空白字符。 使用strlen()确保它们的长度相同。
使用此代码:
<?php
$cur_account['roles'] = 'administrator';
$acc_type = $cur_account['roles'];
echo $acc_type . "<br>";
echo strcmp("administrator", $acc_type);
?>
我能够输出
administrator
0
@SLAYER这是完全错误的。 strcmp在相等时给你0:http://php.net/manual/en/function.strcmp.php – jValdron
@SLAYER:int strcmp(string $ str1,string $ str2);如果str1小于str2,则strcmp返回<0;如果str1大于str2,则为0;如果相等,则为0。 – Dev
对不起我的错误... :) 正确的行为.. 如果str1小于str2,则返回<0;如果str1大于str2,则为0;如果相等,则为0。 –