2012-04-01 51 views
4

我有以下的PHP代碼,從MySQL數據庫中獲取序列化數組,然後反序列化它。這工作正常。下面的代碼:檢查php數組中是否存在值 - 不工作?

$row=mysql_fetch_array($result); 
$mydata=$row[0]; 
$unser=unserialize($mydata); 

echo "$mydata<br>"; 
print_r($unser); 
echo "<br>"; 
echo $unser[1901]; 

輸出是這樣的:

a:2:{i:2070;s:4:"0.00";i:1901;s:4:"1.00";} 
Array ([2070] => 0.00 [1901] => 1.00) 
1.00 

到目前爲止,一切都很好。現在,我試圖編寫代碼,以便檢查數組鍵1901是否存在。爲此,我試過這個:

$search_array = $unser; 
if (array_key_exists('1901', $search_array)) { 
    echo "The key 1901 is in the array"; 
} 

但是,這是返回一個錯誤。我究竟做錯了什麼?

+4

「一個錯誤」,並沒有告訴我們很多。請引用錯誤! – 2012-04-01 19:43:22

+0

當然,對不起!錯誤是:解析錯誤:語法錯誤,意外T_VARIABLE – user1227914 2012-04-01 19:47:53

+0

在哪一行發生錯誤? 'array_key_exists'之後或之前的 – 2012-04-01 19:48:58

回答

4

用下面的代碼:

$mydata= 'a:2:{i:2070;s:4:"0.00";i:1901;s:4:"1.00";}'; 
$unser=unserialize($mydata); 

echo "$mydata<br>"; 
print_r($unser); 
echo "<br>"; 
echo $unser['1901']; 

$search_array = $unser; 
if (array_key_exists('1901', $search_array)) { 
    echo "<br />The key 1901 is in the array"; 
} 

它會正常工作:

a:2:{i:2070;s:4:"0.00";i:1901;s:4:"1.00";} 
Array ([2070] => 0.00 [1901] => 1.00) 
1.00 
The key 1901 is in the array 

檢查,如果你有你已經發布的代碼行後,更多的代碼。我認爲是另一段讓你感到困惑的代碼。

+0

工作正常!謝謝!我注意到我的數據是錯誤的! – user1227914 2012-04-08 10:57:23

+0

@ user1227914不客氣! – 2012-04-08 22:05:11

-1
echo $unser[1901]; 

應該

echo $unser['1901']; 

你也可以做

if(isset($unser['1901'])) { } 

array_key_esists(),而不是

+1

正確,但不是100%。有時候,PHP認識到你犯了一些錯誤,並且知道'1901'不是一個常量。 – 2012-04-01 19:53:02

+1

'$ unser [1901]'完全沒問題。在這種情況下'array_key_exists()'和'isset()'是不相同的。 – Pateman 2012-04-01 19:53:07

+0

不幸的是,這並沒有奏效。現在錯誤是分析錯誤:語法錯誤,意外T_CONSTANT_ENCAPSED_STRING – user1227914 2012-04-01 19:55:37