in_array用于检查PHP的替代方法

时间:2015-10-14 11:15:53

标签: php arrays

我正在使用in_array()来检查product_id的值是否在数组中,但它似乎不起作用。

这是我在会话变量中添加带有附加信息的新product_id的方法:

$_SESSION['product_list']['premium'][$product_id] = array(                                                         
    "price" => $price,                                                        
    "name" => $name
);

这是我的代码,用于检查它是否已在会话中添加(以防止重复相同的产品)

$array_to_check = $_SESSION['product_list']['premium'];

if ( in_array($product_id, $array_to_check) ) {

    echo json_encode( 'already exists' );

} else {

    echo json_encode( 'successfully added' );

}

但我总是成功地添加',尽管我尝试一遍又一遍地添加相同的产品。

此代码有什么问题?

4 个答案:

答案 0 :(得分:2)

您应该使用array_key_exists -

array_key_exists($product_id, $array_to_check)

$product_id是这种深度的关键。 in_array检查值。

答案 1 :(得分:1)

您可以将其检查为

if(isset($_SESSION['product_list']['premium'][$product_id]))
 {
 //yes
 }

答案 2 :(得分:1)

if(isset($_SESSION['product_list']['premium'][$product_id])) {
    echo json_encode('already exists');
} else {
    echo json_encode('successfully added');
}

除非$_SESSION['product_list']['premium'][$product_id]为空或假,否则将成为现实

答案 3 :(得分:1)

我想你要检查Assoc Array中的键,因为你应该使用array_key_exists(),in_array()会检查值而不是键。

<强>例如

$search_array = array('first' => 1, 'second' => 4);
if (array_key_exists('first', $search_array)) {
    echo "The 'first' element is in the array";
}