1

PHPの初心者。 によって出力を出力しているとき
に、変数に配列インデックスの値が表示され、画面に出力されます。$acc_type = $cur_account['roles']
echo $acc_typeadministrator

だから、私が試した場合、echo strcmp("administrator", $acc_type);理想的には印刷するはず0ですが、そうではありません。代わりに印刷してい1ます。

なぜこれが起こるのか理解できません。型キャストか何かをする必要がありますか?どこが間違っているのですか?

4

3 に答える 3

2

を使用して変数の内容を出力して、が返されないvar_dump理由を確認してください。strcmp0

var_dump引用符で囲まれた文字列と長さを出力します。これは、空白文字など、文字列が等しくなるのを妨げるものを見つけるのに役立ちます。

于 2012-09-12T11:59:15.400 に答える
1

strcmp実際には、文字列を比較するための基本的な関数です。文字列間の同等性をテストするために使用する==(またはより安全な)ことができます。===

if($ acc_type === "administrator"){
  //コード
}

ただし、strcmpが1を返す場合、文字列は完全に同一ではありません。文字列の長さ(おそらく先頭/末尾のスペース?)を。で確認する必要がありますstrlen

于 2012-09-12T11:59:27.773 に答える
0

私の推測では、「administrator」文字列の1つに空白文字が含まれている可能性があります。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 に答える