正在检查php数组中是否存在值-不起作用


Checking if value exists in php array - not working?

我有下面的php代码,它从mysql数据库中获取一个序列化的数组,然后取消序列化。这很好。以下代码:

$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";
}

然而,这返回了一个错误。我做错了什么?

使用以下代码:

$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

在你发布的代码行之后,检查你是否有更多的代码。我认为这是另一段让你困惑的代码。

echo $unser[1901];

应该是

echo $unser['1901'];

你也可以做

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

而不是array_key_esists()