我正在使用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' );
}
但我总是成功地添加',尽管我尝试一遍又一遍地添加相同的产品。
此代码有什么问题?
答案 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";
}