1

PHP新手。 当我打印输出并将其打印在屏幕上时,我
在变量中获取了数组索引的值。$acc_type = $cur_account['roles']
echo $acc_typeadministrator

因此,如果我尝试过echo strcmp("administrator", $acc_type);并且理想情况下应该 print 0,但事实并非如此;相反,它正在打印1

我无法理解为什么会这样。我需要做一个类型转换还是什么?我哪里错了?

4

3 回答 3

2

尝试使用打印变量的内容var_dump来查看为什么strcmp不返回0

var_dump将打印带引号的字符串以及长度,这有助于查找空格字符或阻止字符串相等的任何内容。

于 2012-09-12T11:59:15.400 回答
1

strcmp实际上是比较字符串的基本功能。您可以只使用==(或===更安全)来测试字符串之间的相等性。

if ($acc_type === "管理员") {
  // 你的代码
}

但是,如果 strcmp 返回 1,则您的字符串肯定不相同。您应该使用 . 检查字符串长度(可能是前导/尾随空格?)strlen

于 2012-09-12T11:59:27.773 回答
0

我的猜测是您的“管理员”字符串之一可能包含空格字符。使用 strlen() 确保它们的长度相同。

使用此代码:

<?php 

$cur_account['roles'] = 'administrator';
$acc_type = $cur_account['roles'];
echo $acc_type . "<br>";
echo strcmp("administrator", $acc_type);

?>

我能够输出

administrator
0
于 2012-09-12T12:05:00.000 回答