2012-04-01 4 views
4

私は、mysqlデータベースから直列化された配列を取得し、それを直列化しない以下のPHPコードを持っています。これはうまくいきます。次のコード: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

"エラー"、私たちにはあまり言いません。エラーを引用してください! –

+0

もちろん、申し訳ありません!エラーは次のとおりです。解析エラー:予期しない構文エラーT_VARIABLE – user1227914

+0

そのエラーはどの行で発生しますか? –

答えて

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

+0

@ user1227914ようこそ! –

-1
echo $unser[1901]; 

echo $unser['1901']; 

また次のコードで

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

の代わりに、array_key_esists()

+1

正解ですが100%ではありません。時には、PHPはいくつかの間違いを認識しており、 '1901'は定数ではないことを知っています。 –

+1

'$ unser [1901]'は完全に問題ありません。この場合、 'array_key_exists()'と 'isset()'は同じではありません。 – Pateman

+0

それは残念なことに動作しませんでした。今度はエラーがパーズエラーです:構文エラー、予期しないT_CONSTANT_ENCAPSED_STRING – user1227914

関連する問題