PHP中的新手。
我在变量中得到一个数组索引的值为$acc_type = $cur_account['roles']
我按echo $acc_type
打印输出,并在屏幕上打印administrator
。
所以,如果我尝试echo strcmp("administrator", $acc_type);
,理想情况下应该打印0
,但事实并非如此;而是打印1
。
我无法理解为什么会这样。我需要进行类型转换吗?我哪里错了?
答案 0 :(得分:2)
尝试使用var_dump
打印变量内容,了解strcmp
未返回0
的原因。
var_dump
将打印带引号的字符串以及长度,这有助于查找空格字符或任何阻止字符串相等的内容。
答案 1 :(得分:1)
strcmp
实际上是比较字符串的基本功能。您可以使用==
(或更安全的===
来测试字符串之间的相等性。
if ($acc_type === "administrator") { // Your code }
但是,如果strcmp返回1,那么你的字符串绝对不一样。你应该用strlen
检查字符串长度(可能是前导/尾随空格?)。
答案 2 :(得分:0)
我的猜测是你的一个“管理员”字符串中可能有一个空白字符。 使用strlen()确保它们的长度相同。
使用此代码:
<?php
$cur_account['roles'] = 'administrator';
$acc_type = $cur_account['roles'];
echo $acc_type . "<br>";
echo strcmp("administrator", $acc_type);
?>
我能够输出
administrator
0