2012-10-12 72 views
1

我正在爲客戶創建一個結帳,並且他們的購物車中的內容正在通過$ _GET發送到頁面的數據。

我想提取該數據,然後使用循環使用它填充多維數組。

這裏是我是如何命名的數據:

$itemCount = $_GET['itemCount']; 
$i = 1; 
while ($i <= $itemCount) { 
    ${'item_name_'.$i} = $_GET["item_name_{$i}"]; 
    ${'item_quantity_'.$i} = $_GET["item_quantity_{$i}"]; 
    ${'item_price_'.$i} = $_GET["item_price_{$i}"]; 
    //echo "<br />Name: " .${'item_name_'.$i}. " - Quantity: " .${'item_quantity_'.$i}. " - Price: ".${'item_price_'.$i}; 
    $i++; 
} 

在這裏,我想創建一個多維數組像這樣:

Array 
(
[Item_1] => Array 
    (
    [item_name] => Shoe 
    [item_quantity] => 2 
    [item_price] => 40.00 
) 
[Item_2] => Array 
    (
    [item_name] => Bag 
    [item_quantity] => 1 
    [item_price] => 60.00 
) 
[Item_3] => Array 
    (
    [item_name] => Parrot 
    [item_quantity] => 4 
    [item_price] => 90.00 
) 
    . 
    . 
    . 
) 

我想知道的是,如果有一種方法可以在現有的while循環中創建此陣列?我知道能夠將數據添加到像$data = []這樣的數組後,但是實際的語法沒有了我。

也許我完全偏離正軌,有更好的方法呢?

感謝

回答

1

嘗試這樣的事情......

$itemCount = $_GET['itemCount']; 
    $i = 1; 
    $items = array(); 

    while ($i <= $itemCount) { 
     $items['Item_'.$i]['item_name'] = $_GET["item_name_{$i}"]; 
     $items['Item_'.$i]['item_quantity'] = $_GET["item_quantity_{$i}"]; 
     $items['Item_'.$i]['item_price'] = $_GET["item_price_{$i}"]; 
     $i++; 
    } 
+0

太棒了,謝謝你。這很簡單 - 設置數組並使用變量變量和方括號將其填充到循環中。 –

0
$result = array(); 
$itemCount = $_GET['itemCount']; 

$i = 1; 
while ($i <= $itemCount) { 
    $tmp = array(); 
    $tmp['item_name'] = $_GET["item_name_{$i}"]; 
    $tmp['item_quantity'] = $_GET["item_quantity_{$i}"]; 
    $tmp['item_price'] = $_GET["item_price_{$i}"]; 
    //echo "<br />Name: " .${'item_name_'.$i}. " - Quantity: " .${'item_quantity_'.$i}. " - Price: ".${'item_price_'.$i}; 
    $i++; 
    $result['Item_{$i}'] = $tmp; 
} 
+0

謝謝,我已經得到了我上面需要的。 –

0
$itemCount = $_GET['itemCount']; 
$i = 1; 
my_array = []; 
while ($i <= $itemCount) { 
    ${'item_name_'.$i} = $_GET["item_name_{$i}"]; 
    ${'item_quantity_'.$i} = $_GET["item_quantity_{$i}"]; 
    ${'item_price_'.$i} = $_GET["item_price_{$i}"]; 
    //echo "<br />Name: " .${'item_name_'.$i}. " - Quantity: " .${'item_quantity_'.$i}. " - Price: ".${'item_price_'.$i}; 

my_array["Item_".$i] = array(
    "item_name"=>$_GET["item_name_{$i}"], 
    "item_quantity"=>$_GET["item_quantity_{$i}"], 
    "item_price"=>$_GET["item_price_{$i}"] 
); 

    $i++; 
} 

var_dump(my_array); 
+0

謝謝 - 這也適用。我可以在前面的答案中看到邏輯,所以我已經勾選了他們,但是感謝您抽出時間。 –

0
$arr = array(); 
for($i = 1; isset(${'item_name_'.$i}); $i++){ 
    $arr['Item_'.$i] = array(
     'item_name' => ${'item_name_'.$i}, 
     'item_quantity' => ${'item_quantity_'.$i}, 
     'item_price' => ${'item_price_'.$i}, 
    ); 
} 
+0

謝謝,我已經得到了我上面需要的。 –