如何在其他多维数组中检查来自一个多维数组的数据



我有两个多维数组。第一个是$voucher_menu将返回到以下数组:

这个是print_r:

Array
(
[menu_0] => Array
    (
        [menu_id] => 521
        [qty] => 1
        [choice] => Array
            (
                [0] => 1
                [1] => 6
            )
    )
[menu_1] => Array
    (
        [menu_id] => 525
        [qty] => 2
        [choice] => Array
            (
                [0] => 8
            )
    )
[menu_2] => Array
    (
        [menu_id] => 520
        [qty] => 3
        [choice] => Array
            (
            )
    )
)

第二个$item_cart将返回到以下数组:

Array
(
[menu_0] => Array
    (
        [menu_id] => 517
        [qty] => 1
        [choice] => Array
            (
                [0] => 11
                [1] => 12
            )
    )
[menu_1] => Array
    (
        [menu_id] => 525
        [qty] => 1
        [choice] => Array
            (
                [0] => 8
            )
    )
[menu_2] => Array
    (
        [menu_id] => 521
        [qty] => 2
        [choice] => Array
            (
                [0] => 2
                [1] => 6
            )
    )
[menu_3] => Array
    (
        [menu_id] => 520
        [qty] => 3
        [choice] => Array
            (
            )
    )
 )

我想尝试从menu_id验证$voucher_menu中的所有数据,qtychoice的值应该在$item_cart中。

这是我所做的代码:

for($i=0;$i<count($voucher_menu);$i++){
    if(count($voucher_menu["menu_".$i]["choice"]) != 0) {
        $variant_menu[] = $voucher_menu["menu_" . $i]["choice"];
    }
}
    $valid = true;
    foreach($voucher_menu as $row){
        $pass = false;
        foreach($item_cart as $value) {
            if ($row["menu_id"] == $value["menu_id"]) {
                if (isset($variant_menu)) {
                    if(count($row["choice"]) > 0) {
                        $variant = in_array($row["choice"], $value["choice"]);
                    }
                }
                if ($variant == true) {
                    $pass = true;
                    break;
                }
                if ($row["qty"] <= $value["qty"]) {
                    $pass = true;
                    break;
                }
            }
        }

        if(!$pass){
            $valid = false;
            break;
        }
    }
    if($valid == true){
        echo "You got your discount";
    }else{
        echo "You dont get any discount";
    }

我可以验证项目的menu_idqty,但我不知道如何验证choice

我想在$voucher_menu中,如果menu_idchoice,而array的选择不是0,那么choice的值应该在item_cart中相同

伙计,你能帮我怎么检查choice吗?或者如果您有其他方法来验证从$voucher_menu$item_cart的数据,请告诉我。

谢谢你(:

p。choice字符串是id,如果menu_id不相同,则返回不同的id所以如果menu_id521 choice1, 6那么menu_id就不会是1,6

尝试array_diff或array_intersect

使用array_diff,您可以在循环中执行以下操作:

$variant = count(array_diff($row["choice"], $value["choice"])) == 0;

您甚至可以尝试对整个菜单数组执行array_diff并检查qty是否不同,从而大大简化代码。

相关内容

  • 没有找到相关文章