使用PHP检查两个键是否存在数组

时间:2017-11-17 15:44:22

标签: php

我想通过两个键检查数组是否存在:id和type

此代码只能通过id:

进行检查
 if (isset($_POST['type'])) {
   $type = $_POST['type'];
 } 
 else {
   $type = '';
 }

 if (array_key_exists($id, $_SESSION['cart'])) {
        $_SESSION['cart'][$id]['quantity'] += $quantity;
    } else {
        $_SESSION['cart'][$id] = $line;
  }

我尝试使用此代码,但它不起作用:

 if (array_key_exists($id, $_SESSION['cart']) && array_key_exists($type, $_SESSION['cart'])) {
        $_SESSION['cart'][$id]['quantity'] += $quantity;
    } else {
        $_SESSION['cart'][$id] = $line;
    }

$ _ SESSION [' cart'] 是一个包含 $ line

数组的数组
 $line = array(
        'id' => $id,
        'type' => $type,
        'quantity' => $quantity,
        'price' => $price,
        'picture' => $dish->getPicture()->getWebPath(),
    );

这是$ _SESSION [' cart']的输出: enter image description here

正如您在最后一个数组中看到 id 55并输入" french bred" ,我想做的是检查用户是否选择了相同的产品但是具有不同类型的产品,因此如果相同产品和相同类型,则插入新行,否则只需更新数量。

2 个答案:

答案 0 :(得分:1)

这样的事情应该做,但是问题太模糊了,而且显示的代码太少,无法正确理解你的问题

$lineExists = false;
    foreach($_SESSION['cart'] as $index => $line){
        if($line['id'] === $id)
        {
            $_SESSION['cart'][$index]['quantity'] += $quantity;
            $lineExists = true;
        }
    }
    if(!$lineExists)
    {
        $_SESSION['cart'][] = $newLine;
    }

答案 1 :(得分:0)

如果你想检查类型和id是否存在,那么你应该做这样的事情

if (array_key_exists('id', $_SESSION['cart']) && array_key_exists('type', $_SESSION['cart'])) {
  // stuff here..
}

如果$ id是密钥ID的值,那么'id'=> 5然后你应该这样检查:

if ($_SESSION['cart']['type'] == $id) {
 // stuff here
}

希望这对你有所帮助!