Я использую 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' );
}
Но меня всегда "успешно добавили", хотя я пытаюсь добавить один и тот же продукт снова и снова.
Что не так с этим кодом?
Вы должны использовать array_key_exists
-
array_key_exists($product_id, $array_to_check)
$product_id
является ключом к этой глубине. in_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";
}
Вы можете проверить это как
if(isset($_SESSION['product_list']['premium'][$product_id]))
{
//yes
}
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]
пуст или false, это будет истинно
in_array
проверяет значение в массиве. То, что вы делаете, проверяетkey
. Используйтеarray_key_exists
.