一个输入类型=文本的两个值

问题描述 投票:0回答:1

我目前正在使用php中的 "车库 "功能,其中我有一个关于 $car_id和a $city_id. 我想在所选城市有能力卖出x量的车。

由于我有相同的 $car_id 在多辆汽车的情况下,例如 $car_id[0] = "Chevy" 当我试图在城市0而不是城市1出售雪佛兰时,会出现一个问题,因为它只取雪佛兰的数量,而不是按城市划分。

我想知道是否有任何方法可以从一个输入字段中获得两个值。['city']['car_id']

<input type="text" name="['city']['car_id']" placeholder="0">

我希望能够在这个输入字段中写上 "10",然后它将在给定的城市中销售10辆汽车。

php html arrays
1个回答
2
投票

一个可能的解决方案是使用字段集的概念。想象一下,汽车、城市和汽车数量这三个不同的值被存储在一个容器中。

<form name="form" method="post" action="">
    <fieldset>
        <input type="hidden" name="values[0][car_id]" value="1">
        <input type="hidden" name="values[0][city_id]" value="1">
        <input type="number" name="values[0][amount]" value="0" min="0" max="10">
    </fieldset>
    <fieldset>
        <input type="hidden" name="values[1][car_id]" value="2">
        <input type="hidden" name="values[1][city_id]" value="1">
        <input type="number" name="values[1][amount]" value="0" min="0" max="10">
    </fieldset>
    <input type="submit" value="Save" name="submit">
</form>

正如你所看到的,输入元素的名称属性是用以下方式来说明的 values[n][name]. n 是迭代器的计数。name 是属性的具体名称。这样就形成了一个多维数组,里面存放着输入的数据。这样就保证了各个属性之间的分配。特定城市的特定汽车的数量。

这个结构假设你在不同的城市中迭代。每个城市可以包含若干辆汽车,你可以为其指定一定的金额。

如果你填写并提交上面给出的表格,它的结果是这样的 $_POST 数据结构。

array(2) {
    ["values"] => array(2) {
        [0] => array(3) {
            ["car_id"] => string(1) "1"
            ["city_id"] => string(1) "1"
            ["amount"] => string(1) "1"
        }
        [1] => array(3) {
            ["car_id"] => string(1) "2"
            ["city_id"] => string(1) "1"
            ["amount"] => string(1) "2"
        }
    }
    ["submit"] => string(9) "Save"
}

这个结构很容易迭代。

foreach ($_POST['values'] as $data) {
    echo "City ID: " . $data['city_id'] . PHP_EOL;
    echo "Car ID: " . $data['car_id'] . PHP_EOL;
    echo "Amount: " . $data['amount'] . PHP_EOL;
}

这个方案正好代表了你想要的东西。一套特定城市的特定汽车。

© www.soinside.com 2019 - 2024. All rights reserved.