0

私は、cart_array という多次元配列を保持するセッション Cookie を持っており、for each を使用して内側の配列をループし、while ループでキーと値のペアを取得しています。

製品 ID (pid) だけでなく、色やサイズなどの他のいくつかの変数に基づいて、配列に項目が存在するかどうかを確認したいと考えています。これが私がこれまでに思いついたものです(ただし、pidのみをチェックします)。他の 2 つの変数を確認するにはどうすればよいですか?

ここに私の変数があります

$_SESSION['cart_array'] = array(1 => array(
        "pid" => $pid,
        "quantity" => $quantity,
        "color" => $color,
        "size" => $size,
        "title" => $title,
        "product_type" => $product_type,
        "price" => $price))

for と while ループの組み合わせのコードは次のとおりです。

foreach($_SESSION['cart_array'] as $each_item) {
            $index++;
            while(list($key, $value) = each($each_item)) {
                if($key == "pid" && $value == $pid) {
                    //That item is in the array
                    echo "This item is in the array";
                } else {
                    echo "This item is not in the cart";
                }
            }
        }
4

3 に答える 3

0

私はこのようなことをします:

    foreach($_SESSION['cart_array'] as $each_item) {
        $index++;

        $pidTest = false;
        $colorTest = false;
        $sizeTest = false;

        while(list($key, $value) = each($each_item)) {
            if($key == "pid" && $value == $pid) {
               $pidTest = true;
            }

            if($key == "color" && $value == $color) {
               $colorTest = true;
            } 
        }

        if ($pidTest && $colorTest && sizeTest)
        {
             echo "Item is in the cart";
        }
        else
        {
             echo "Nope";
        }
    }

もちろん、これをよりエレガントかつ動的に処理できますが、それは使用できる基本的なロジックです。

于 2013-07-25T11:03:15.827 に答える