带逻辑参数的 PHP 多维数组(有些脑筋急转弯)

发布于 2024-11-05 21:13:47 字数 1723 浏览 0 评论 0原文

问题: 我有一个来自 magento 的变量,存储在模型类中,可以这样获取:

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

这是 print_r $productArray[]:
的值 示例输出 1:

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


示例输出 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"
  }
}

你怎样才能做到这样?(应该这样打印)
如果输出1:最终输出1

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


如果输出2:最终输出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" />

金额值将被输入 产品价格 * 产品数量

玩得开心:) 这只是一个虚拟问题,但这对其他人可能有帮助

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

2024-11-12 21:13:47

像这样:

<?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
}
?>

希望这有帮助。干杯

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

秋凉 2024-11-12 21:13:47

不确定 magento 但在正常的 php 中它会是:

<?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"]).'" />';
  }
?>

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"]).'" />';
  }
?>
小瓶盖 2024-11-12 21:13:47

在 php 中创建表单字段数组时,使用“product[$id]”作为名称,然后 php 将在 $_POST 中返回一个整齐的数组。你甚至可以执行 name="product[$id][price]" 并且你会得到一个二维数组。

请注意,如果您的网上商店在结账时信任隐藏的表单数据来拖拽购物车(正如您似乎所做的那样),您就会遇到一个巨大的安全漏洞,因此请发布网址,我想免费订购东西!

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 !

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文