返回单值多维数组

时间:2015-06-22 23:01:26

标签: php multidimensional-array

我正在尝试构建自定义邮政编码搜索以查找送货费用,但我似乎无法做到正确。

首先,这是我在前端设置表单的方式:

<form class="delivery-fee" role="search" method="get" action="">
    <div class="form-group">
        <label>Find Your Delivery Area:</label>
        <input class="form-control" type="number" value="" name="zipcode" placeholder="Enter Zipcode" pattern="\d*" />
        <input type="submit" value="See Delivery Minimum" />
    </div>
</form>

我的数据设置如下:

$delivery_areas = [
    'Rancho Cucamonga' => [
        'zipcodes' => [91701, 91729, 91730, 91737, 91739],
        'fee'      => 100
    ],
    'Upland' => [
        'zipcodes' => [91784, 91785, 91786],
        'fee'      => 150
    ]
];

这就是我循环浏览数据的方式:

foreach ($delivery_areas as $key => $delivery_area) {
    if (is_array($delivery_area)) {
        if (in_array($_GET['zipcode'], $delivery_area['zipcodes'])) {
            echo $delivery_area['fee'];
        } else {
            echo 'Error message';
        }
    }
}

我遇到的问题是如果我搜索说91701我会收到正确的费用,但我也收到了错误信息。另一方面,如果没有找到任何内容,我也会收到两条错误消息。

关于如何获得理想结果的任何建议?

2 个答案:

答案 0 :(得分:0)

您可以使用var来修改代码,例如:

$fee = -1;
foreach ($delivery_areas as $key => $delivery_area) {
    if (is_array($delivery_area)) {
        if (in_array($_GET['zipcode'], $delivery_area['zipcodes'])) {
            $fee = $delivery_area['fee'];
            break;
        }
    }
}

if($fee == -1)
    echo 'Error message';
else
    echo $fee;

答案 1 :(得分:0)

测试:

$fee = 0;
foreach ($delivery_areas as $key => $delivery_area) {
    if (is_array($delivery_area) && in_array($_GET['zipcode'], $delivery_area['zipcodes'])) {
        $fee = $delivery_area['fee']; break;
    }
}

echo $fee!=0 ? $fee : 'Error Message';