【问题标题】:Checking if value exists in php array - not working?检查 php 数组中是否存在值 - 不起作用?
【发布时间】:2012-04-15 14:18:24
【问题描述】:

我有以下 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";
}

但是,这会返回错误。我做错了什么?

【问题讨论】:

  • “一个错误”,并没有告诉我们太多。请引用错误!
  • 当然,抱歉!错误是:解析错误:语法错误,意外的 T_VARIABLE
  • 该错误发生在哪一行?
  • array_key_exists之后还是之前?
  • 您所有的分号都在正确的位置吗?即错误行之前的行上没有缺少分号?

标签: php mysql arrays


【解决方案1】:

使用以下代码:

$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

检查在您发布的代码行之后是否还有更多代码。我认为是另一段让您感到困惑的代码。

【讨论】:

    【解决方案2】:
    echo $unser[1901];
    

    应该是

    echo $unser['1901'];
    

    你也可以这样做

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

    而不是 array_key_esists()

    【讨论】:

    • 正确,但不是 100%。有时,PHP 会认识到您正在犯一些错误并且知道1901 不是一个常数。
    • $unser[1901] 完全没问题。而array_key_exists()isset()在这种情况下是不一样的。
    • 不幸的是,这不起作用。现在的错误是 Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING
    • 发布更多源代码。错误可能发生在发布代码前 1 行。
    • 奇怪的是,在正常工作的 echo 和我最初尝试的 search_array 之间的所有代码
    猜你喜欢
    • 1970-01-01
    • 2016-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-10
    • 1970-01-01
    • 2012-09-22
    相关资源
    最近更新 更多