在嵌套的php数组中搜索$代码

时间:2013-02-11 20:03:28

标签: php arrays multidimensional-array

Stack Overflowers,

试图深入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"
  }
}

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

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

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

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

2 个答案:

答案 0 :(得分:1)

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

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

    return NULL;
}

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

没有机会对其进行测试(在此输入),但 按预期工作。

答案 1 :(得分:0)

这样的事情:

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

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