1

我有一个 codeigniter 购物车,它的“购物车”数组如下:

Array (
[a87ff679a2f3e71d9181a67b7542122c] => Array
    (
        [rowid] => a87ff679a2f3e71d9181a67b7542122c
        [id] => 4
        [qty] => 1
        [price] => 12.95
        [name] => Maroon Choir Stole
        [image] => 2353463627maroon_3.jpg
        [custprod] => 0
        [subtotal] => 12.95
    )

[8f14e45fceea167a5a36dedd4bea2543] => Array
    (
        [rowid] => 8f14e45fceea167a5a36dedd4bea2543
        [id] => 7
        [qty] => 1
        [price] => 12.95
        [name] => Shiny Red Choir Stole
        [image] => 2899638984red_vstole_1.jpg
        [custprod] => 0
        [subtotal] => 12.95
    )

[eccbc87e4b5ce2fe28308fd9f2a7baf3] => Array
    (
        [rowid] => eccbc87e4b5ce2fe28308fd9f2a7baf3
        [id] => 3
        [qty] => 1
        [price] => 14.95
        [name] => Royal Blue Choir Stole
        [image] => 1270984005royal_vstole.jpg
        [custprod] => 1
        [subtotal] => 14.95
    )

)

我的目标是遍历这个多维数组,如果存在任何具有键值对“custprod == 1”的产品,那么我的结帐页面将显示一件事,如果购物车中没有自定义产品,它会显示另一件事. 任何帮助表示赞赏。谢谢。

4

3 回答 3

2

您可以使用 . 检查custprod密钥,而不是循环遍历它array_key_exists。或者只是检查一下arr['custprod'] isset(两个函数的处理null方式不同)。

$key = "custprod";
$arr = Array(
    "custprod" => 1, 
    "someprop" => 23
);
if (array_key_exists($key, $arr) && 1 == $arr[$key]) {
    // 'custprod' exists and is 1
}
于 2012-11-24T22:39:33.987 回答
1
function item_exists($cart, $custprod) {
    foreach($cart as $item) {
        if(array_key_exists("custprod", $item) && $item["custprod"] == $custprod) {
            return true;
        }
    }
    return false;
}

现在,您可以使用此函数检查产品是否存在于堆栈中:

if(item_exists($cart, 1)) {
    // true
} else {
   // false
}
于 2012-11-24T22:59:59.507 回答
0

您仍然需要循环数组来检查它:

$cust_prod_found = false;

foreach($this->cart->contents() as $item){
    if (array_key_exists("custprod", $item) && 1 == $item["custprod"]) {
        $cust_prod_found = true; break;
    }
}

if ($cust_prod_found) {
    // display one thing
} else {
    // display another thing
}
于 2012-11-24T22:57:08.813 回答