1

堆栈溢出者,

在尝试深入 PHP 之后,我似乎陷入了困境;我有一个预先生成的数组,其中 var_dump($codes) 如下:

array(2) {
  [0]=>
  array(3) {
    ["code"]=>
    string(5) "01332"
    ["description"]=>
    string(19) "Derby Discount Code"
    ["discount_amount"]=>
    string(2) "15"
  }
  [1]=>
  array(3) {
    ["code"]=>
    string(5) "01283"
    ["description"]=>
    string(25) "South Derby Discount Code"
    ["discount_amount"]=>
    string(2) "20"
  }
}

我有一个表格,它 _POST 一个 $code 的变量,并想在上面的数组中搜索,看看上面的嵌套数组之一中是否有 $code 的匹配项。如果是这样,我希望能够将折扣金额和描述作为单个变量。

到目前为止,我有以下内容:

if(in_array($code, $codes)) { 
    //apply discount code using $discount_amount
}

其中 $codes 输出发布在此问题顶部的数组。

4

2 回答 2

1

您可以使用的快速小功能:

function get_discount($arr, $code) {
    foreach($arr as $item) {
        if($item["code"] == $code) {
            return $item["discount_amount"];
        }
    }

    return NULL;
}

其中 $arr 是您的数组(您已转储), $code 是您要检查的代码。应该返回折扣,或者 NULL。

还没有机会对其进行测试(在此处输入),但它应该可以按预期工作。

于 2013-02-11T20:07:47.720 回答
0

像这样的东西:

foreach ($pregeneratedCodes as $pregeneratedCode) {
    if (in_array($pregeneratedCode['code'], $_POST['codes'])) {
        $discount = floatval($pregeneratedCode['discount_amount']);
        // now you can use $discount
    }
}

这里没有验证,它假设你有一个数组作为$_POST['codes']. 它还假设您希望允许多个代码匹配。

于 2013-02-11T20:06:48.210 回答