PHP新手。
当我打印输出并将其打印在屏幕上时,我
在变量中获取了数组索引的值。$acc_type = $cur_account['roles']echo $acc_typeadministrator
因此,如果我尝试过echo strcmp("administrator", $acc_type);并且理想情况下应该 print 0,但事实并非如此;相反,它正在打印1。
我无法理解为什么会这样。我需要做一个类型转换还是什么?我哪里错了?
尝试使用打印变量的内容var_dump来查看为什么strcmp不返回0。
var_dump将打印带引号的字符串以及长度,这有助于查找空格字符或阻止字符串相等的任何内容。
strcmp实际上是比较字符串的基本功能。您可以只使用==(或===更安全)来测试字符串之间的相等性。
if ($acc_type === "管理员") {
// 你的代码
}
但是,如果 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