2015-10-14 43 views
1

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

这是我如何添加新的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'); 

} 

但我得到总是“成功添加”沉绵我尝试一遍又一遍添加相同的产品。

这段代码有什么问题?

+0

'用于阵列内的值in_array'检查。你正在做的是检查一个“钥匙”。使用'array_key_exists'。 – Akshay

回答

2

您应该使用array_key_exists -

array_key_exists($product_id, $array_to_check) 

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

1

您可以检查它作为

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

哇,这似乎工作很好,也很简单。 Upvoted。 –

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]为空或假,这将获得真正的

1

我猜你想检查副教授阵列的关键,对,你应该使用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"; 
}