2015-10-14 70 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"; 
}