2012-09-12 81 views
1

PHP中的新手。
我得到一个数组索引在我的变量中的值$acc_type = $cur_account['roles']
我正在打印输出echo $acc_type并在屏幕上打印administrator无法使用strcmp函数

所以,如果我试过echo strcmp("administrator", $acc_type);它应该理想地打印0,但它不是;而是它正在打印1

我不明白为什么会发生这种情况。我需要做一个类型转换或什么?我哪里错了?

+0

@SLAYER这是完全错误的。 strcmp在相等时给你0:http://php.net/manual/en/function.strcmp.php – jValdron

+0

@SLAYER:int strcmp(string $ str1,string $ str2);如果str1小于str2,则strcmp返回<0;如果str1大于str2,则为0;如果相等,则为0。 – Dev

+0

对不起我的错误... :) 正确的行为.. 如果str1小于str2,则返回<0;如果str1大于str2,则为0;如果相等,则为0。 –

回答

2

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

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

+0

是的,我得到'string'

  • administrator
'(length = 80)'当我做var_dump时 –

+0

那么,这就解释了为什么字符串不相等,我想。在我看来,变量的内容仅用于演示文稿,或者您做了错误的事情。如果目的是保持用户的角色,那么应该没有HTML。 – nemo

+0

是的,谢谢! –

1

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

 
if ($acc_type === "administrator") { 
    // Your code 
} 

但是,如果strcmp返回1,那么您的字符串绝对不会相同。你应该用strlen检查字符串长度(可能是前导空格或尾随空格?)。

0

我的猜测是你的一个'管理员'字符串中可能有一个空白字符。 使用strlen()确保它们的长度相同。

使用此代码:

<?php 

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

?> 

我能够输出

administrator 
0