如何确定当前的php数组编号

时间:2013-04-05 17:59:49

标签: php arrays

下午好。

我正在尝试创建一个数组列表,其中一个键值为($ _REQUEST ['qty#']),其中“#”将是数组中项目的当前数字(因为它属于收集此信息的表单中的字段。)

例如:

$itemdetails =  array(
    array(
    'qty' => ($_REQUEST['qty1']),
    'price' => 0.70,
    'pn' => 'TV-1000',

    array(
    'qty' => ($_REQUEST['qty2']),
    'price' => 0.99,
    'pn' => 'TV-5000'));

有没有办法让我自动确定($ _REQUEST ['qty'])中的数字而无需手动输入数字?

只是想知道。我的下一个猜测是将它全部输入数据库并从那里拉出来。

提前致谢了。

2 个答案:

答案 0 :(得分:0)

你需要循环......

$itemdetails = array(
        array(
                'price' => 0.70,
                'pn' => 'TV-1000'
        ),

        array(
                'price' => 0.99,
                'pn' => 'TV-5000'
        )
);

foreach ( $itemdetails as $k => &$item ) {
    $item['qty'] = $k + 1;
}

答案 1 :(得分:0)

你应该做的是通过POST / GET传递一组数据。

要在输入中执行此操作,请为每个输入创建名称值= qty[]。请注意这里的数组语法[]

PHP将使用该数组语法自动获取所有输入值,并在$ _POST / $ _ REQUEST中构建一个数组。

所以你可以像

一样访问你的数组
var_dump($_POST['qty']);
var_dump($_REQUEST['qty']);

然而,仍然无法根据需要将其与价格/ pn相匹配。那么,让我们进一步采用数组语法,实际上将键值放入其中:

<input name="qty[0]" ... />
<input name="qty[1]" ... />

通过执行此操作,您将能够确切地知道哪个数组索引与哪个项匹配(假设您知道输入显示的顺序)。

$_POST['qty'][0]作为第一项,$_POST['qty'][1]成为下一项,依此类推。

所以假设你还有像这样的数组中的价格/ pn:

$item_array = array(
    0 => array('price' => 123, 'pn' = 'ABC'),
    1 => array('price' => 456, 'pn' = 'XYZ'),
    ...
);

然后,您可以轻松地遍历输入数量并构建最终数组,如下所示:

$itemdetails = array();
foreach ($_REQUEST['qty'] as $key => $value) {
    $itemdetails[$key] = $item_array[$key];
    $itemdetails[$key]['qty'] = $value;
)

另请注意,如果您希望通过POST传递此数据,则最佳做法是使用$_POST超全局而不是$_REQUEST超全局。