PHP新手。
当我打印输出并将其打印在屏幕上时,我
在变量中获取了数组索引的值。$acc_type = $cur_account['roles']
echo $acc_type
administrator
因此,如果我尝试过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