2011-12-07 97 views
0

我不是很有經驗的PHP。我面臨的問題是:在php中的數據類型和它們的比較

print "post: {$_POST['var']} session: {$_SESSION['var']}\n"; 

比方說,這打印出2個相等的輸出。

然後

if($_POST['var'] == $_SESSION['var']){ 
... 
} 

永遠評估爲真。我該怎麼做才能解決它?

+0

你能準確地複製它輸出的內容並把它放在這裏嗎? – jprofitt

+1

什麼打印出來?你有沒有看過它與一個hexeditor?僅僅因爲它看起來相同並不意味着沒有任何額外的空間或NUL字節。 – mario

+2

就像@mario說的那樣,'var'兩邊可以立即存在空格,所以你的比較永遠不會返回true。嘗試在$ _SESSION ['var']'和$ _POST ['var']'上運行'trim'。 – Cyclonecode

回答

2

嘗試以下操作:

if (trim($_POST['var']) == trim($_SESSION['var'])) { 
    // ... 
} 

你也可以檢查$_SESSION['var']$_POST['var']的內容使用var_dump,看看它們是否匹配:

var_dump($_POST['var']); 
var_dump($_SESSION['var']); 
1

我不認爲它可能是一個數據類型問題(除非它們是浮點數然後它可能),但如果你想檢查它們是否是相同的類型,那麼使用===。我的猜測是,在你打印出來的時候,你無法檢測到其中的一個空間。你能舉出打印出來的例子嗎?

0
<?php 

$_SESSION['var'] = "Variable"; 
$_POST['var'] = "Variable"; 

if($_POST['var'] == $_SESSION['var']) 
    print 1; 
else 
    print 2; 

?> 

結果1.什麼是你比較的變量的值是多少?

0

我不認爲這是一個數據類型的問題,但如果你想在PHP比較的數據類型,你可以做到以下幾點:

if($_POST['var'] === $_SESSION['var']){ 
    ... 
} 

或者你可以通過做投的數據類型如下:( int)(array)(object)

$a = (int)$_POST['var']; 
$b = (int)$_SESSION['var']; 

if($a === $b) { 
    ... 
} 
+0

這沒有工作 – Pyjong

+0

等待actualy我用==運營商,所以它可能工作得很好 – Pyjong