2017-07-14 104 views
2

這是一件基本的事情,我無法相信我無法弄清楚。我在模板文件中有一個php變量,稱之爲$author。它被我使用的內容管理系統傳入。我很確定這是一個字符串。它的值是「約翰」PHP無法比較字符串

我之所以認爲這是一個字符串,是因爲當我嘗試

<?php print gettype($author); ?> 

它打印「串」
當我寫

<?php print $author; ?> 

'約翰'獲得印刷
但是,當我寫

<?php $author == 'John' ? print 'yes' : print 'no'; ?> 

它打印「否」。等等..什麼?
此外,當我使用

<?php print strcmp($author, 'John'); ?> 

該函數返回-14!
我想我的問題是,這裏發生了什麼?我如何測試如果$author is equal to 'John'? 如果重要,內容管理系統是drupal,但我認爲這更多的是一個普通的PHP問題。

+3

現在要做'的var_dump($作者)' –

+1

呀,後續代碼var_dump將傾錯誤進行 –

+1

也許$筆者包含了一些控制字符/空格? 嘗試'trim($ author)' –

回答

1

強制它是一個字符串。

<?php 
$author = (string)$author; 
$author == 'John' ? print 'yes' : print 'no'; 
?> 
+0

我給了一個嘗試,但事實證明它只是有一些額外的字符,我沒有注意到在檢查元素(猜測它有點遲了),.. var_dump根除了差異。如果它幫助某人,我會離開這個問題。 –

+1

@Benjamin Thvedt所有的時間都在呵呵:)。現在好了。 – Companjo