我有两个多维数组。第一个是$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
中的所有数据,qty
和choice
的值应该在$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_id
和qty
,但我不知道如何验证choice
。
我想在$voucher_menu
中,如果menu_id
有choice
,而array
的选择不是0
,那么choice
的值应该在item_cart
中相同
伙计,你能帮我怎么检查choice
吗?或者如果您有其他方法来验证从$voucher_menu
到$item_cart
的数据,请告诉我。
谢谢你(:
p。choice
字符串是id
,如果menu_id
不相同,则返回不同的id
所以如果menu_id
是521
choice
是1, 6
那么menu_id
就不会是1,6
尝试array_diff或array_intersect
使用array_diff,您可以在循环中执行以下操作:
$variant = count(array_diff($row["choice"], $value["choice"])) == 0;
您甚至可以尝试对整个菜单数组执行array_diff并检查qty是否不同,从而大大简化代码。