for循环在php的echo上不返回GET变量的值


for loop returns no value of GET variables on echo in php

这是我的url:

http://example.com/shop-login.php?itemCount=1&item_name_1=+product1&item_quantity_1=1&item_price_1=23.52&item_options_1=color%3A+Color%2C+pid%3A+5&Shipping_Option=EMS-Express

以下php命令:

echo $_GET['item_name_1'];

正确地给出了product1的值。

但是下面的代码在for循环

上没有输出
$i = 1;
for ($i = 1; $i < $item_count; $i++) {
    $item_name_.$i = $_GET["item_name_".$i];
    echo $item_name_.$i .'<br />' ;
    $item_quantity_.$i = $_GET["item_quantity_".$i];
    echo $item_quantity_.$i .'<br />' ;
    $item_price_.$i = $_GET["item_price_".$i];
    echo $item_price_.$i .'<br />' ;
    $item_options_.$i = $_GET["item_options_".$i];
    echo $item_options_.$i .'<br />' ;
}

我想在url中使用$_GET[] ????获取item_name_1, item_name_2等值

在处理编程任务时,您应该问自己是什么最适合您任务的数据结构。在这种情况下,我认为数组是更好的的方法。因此,考虑使用多维数组items

还注意到您的loop条件是$i < $item_count在你的例子中,$item_count将等于1,而1不是<1 .

$item_count = (int) $_GET['itemsCount'];
$i = 1;
$items = array();
for ($i = 1; $i <= $item_count; $i++) {
    $items[$i]['name'] = $_GET["item_name_".$i];
    echo $items[$i]['name'] .'<br />' ;
    $items[$i]['quantity'] = $_GET["item_quantity_".$i];
    echo $items[$i]['quantity'] .'<br />' ;
    $items[$i]['price'] = $_GET["item_price_".$i];
    echo $items[$i]['price'] .'<br />' ;
    $items[$i]['options'] = $_GET["item_options_".$i];
    echo $items[$i]['options'] .'<br />' ;
}

${'item_name_'.$i}代替$item_name_.$i。在这里阅读更多关于变量的信息。

还要检查$item_count的值。如果小于或等于1,则不执行for循环。

下面是语法正确的代码:
$i = 1;
for ($i = 1; $i <= $item_count; $i++) {
    ${'item_name_'.$i} = $_GET["item_name_".$i];
    echo ${'item_name_'.$i} .'<br />' ;
    ${'item_quantity_'.$i} = $_GET["item_quantity_".$i];
    echo ${'item_quantity_'.$i} .'<br />' ;
    ${'item_price_'.$i} = $_GET["item_price_".$i];
    echo ${'item_price_'.$i} .'<br />' ;
    ${'item_options_'.$i} = $_GET["item_options_".$i];
    echo ${'item_options_'.$i} .'<br />' ;
}

您可能会发现在使用

的上下文中使用多维数组会更容易。
$i = 1;
$items = array();
for ($i = 1; $i <= $item_count; $i++) {
    $items[$i] = array(
        'name' => $_GET['item_name_'.$i],
        'quantity' => $_GET['item_quantity_'.$i],
        'price' => $_GET['item_price_'.$i],
        'options' => $_GET['item_options_'.$i],
    );
    // Outputting statements here
}

使用如下数组

$arr = array();
for ($i = 1; $i < $item_count; $i++) {
    if(isset($_GET["item_name_".$i]))
        $arr['item_name'][] = $_GET["item_name_".$i];
    if(isset($_GET["item_quantity_".$i]))
        $arr['item_quantity'][] = $_GET["item_quantity_".$i];
    if(isset($_GET["item_options_".$i]))
        $arr['item_options'][] = $_GET["item_options_".$i];
}
print_r($arr);