1

Problem: I have a variables from magento that stored in the model class and can be get as

$productArray[] = array();
foreach ($order->getAllItems() as $item) {
    $productArray[] = array(
        "product"  => $item->getName(),
        "qty"   => $item->getQtyOrdered(),
        "amount" => $item->getPrice(),
    );
}

This are the values if print_r the $productArray[]:
Sample Output 1:

array(1) {
  [0]=>
  array(3) {
    ["product_name"]=>
    string(12) "Test Product"
    ["product_qty"]=>
    string(6) "2.0000"
    ["product_price"]=>
    string(7) "12.0000"
  }
}


Sample Output 2:

array(2) {
  [0]=>
  array(3) {
    ["product_name"]=>
    string(12) "Test Product"
    ["product_qty"]=>
    string(6) "2.0000"
    ["product_price"]=>
    string(7) "12.0000"
  }
  [1]=>
  array(3) {
    ["product_name"]=>
    string(6) "Test 2"
    ["product_qty"]=>
    string(6) "5.0000"
    ["product_price"]=>
    string(7) "22.0000"
  }
}

And how can you make it like this?(should be print like this)
If output 1: Final Output 1

<input type="hidden" name="product" value="Test Product" />
<input type="hidden" name="amount" value="24.00" />


If output 2: Final Output 2

<input type="hidden" name="product1" value="Test Product" />
<input type="hidden" name="amount1" value="24.00" />
<input type="hidden" name="product2" value="Test 2" />
<input type="hidden" name="amount2" value="110.00" />

The amount value will be get in product_price * product_qty.

Have some fun :) This is only a dummy problem, but this can be helpful to others

3 Answers 3

2

Like this:

<?php
foreach($productArray as $i => $product){
  $index = count($productArray) == 1 ? "" : $i; //So we don't have index when only 1 element
  $amount = $product['product_price'] * $product["product_qty"];
  $name = $product['product_name'];
?>
  <input type="hidden" name="product<?php echo $index; ?>" value="<?php echo $name;?>" />
  <input type="hidden" name="amount<?php echo $index;?>" value="<?php echo $amount;?>" />
<?php
}
?>

Hope this helps. Cheers

Sign up to request clarification or add additional context in comments.

Comments

1

not sure about magento but in normal php it would be:

<?php
  $productArray = array(
    array(
      "product_name" => "Test Product",
      "product_qty" => "2.0000",
      "product_price" => "12.0000"
),
    array(
  "product_name"=> "Test 2",
      "product_qty"=>"5.0000",
      "product_price"=>"22.0000"
    )
  );

  foreach($productArray as $v) {
    echo '<input type="hidden" name="product" value="'.$v["product_name"].'" />';
    echo '<input type="hidden" name="amount" value="'.($v["product_qty"]*$v["product_price"]).'" />';
  }
?>

Comments

0

When making arrays of form fields in php, use "product[$id]" as the name, then php will regurgitate a neat array in $_POST. You can even do name="product[$id][price]" and you'll get a 2D array.

Note that if your webshop trusts hidden form data to haul around the cart during checkout (as you seem to do) you got a gaping security hole, so please post the web address, I'd like to order stuff for free !

1 Comment

hahahaha.. as i said "This is only a dummy problem". I made this problems because i was curious in his session output. and exploring about multidimensional array. :)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.