php - 根据 ID 将序列化的 JS 数组分组为相似的对象/数组

标签 php jquery arrays forms serialization

我有一个带有多维输入字段的复杂表单;

<input type="hidden" name="product[12267][ID]" value="76">
<input type="radio" name="product[12267][electrical_support]" value="1">
<input type="radio" name="product[12267][electrical_support]" value="0" checked="">
<input type="checkbox" name="product[12267][drinks]" value="1" >
<input type="radio" name="product[9999][electrical_support]" value="1">
<input type="hidden" name="product[9999][ID]" value="58">

使用jquery的ajax和serializeArray将表单发送到php;

var formData = new FormData();
formData.append('action', 'add_to_cart');
formData.append('products', $(form).serializeArray());

这会在控制台中输出一组对象,例如:

0: Object
     name: "product[12267][starting_price]"
     value: "15"
1: Object
     name: "product[12267][ID]"
     value: "79"
...

我的问题是如何根据 ID 将多个对象(在 js 中之前或在 php 中之后)分组/排列到单个产品数组中,例如;

$products[12267] = array('starting_price' => 15, 'ID' => 79);

希望我能很好地解释这个案例,如果我需要提供更多详细信息,请告诉我

最佳答案

除非我遗漏了一些东西,否则假设 $inproducts 来自 $_POST['product'] 并且包含不规则的产品信息数组,这应该可以工作。

$products = array();    
foreach ($inproducts as $key=>$inproductarray) {
        if (!isset($products[$key])) {
            $products[$key]=array();
        }
        foreach ($inproductarray as $subkey=>$subvalue) {
            $products[$key][$subkey] = $subvalue;
        }
    }

请注意,生成的数组可能仍然不规则。如果在 POST 数组中找不到表单字段,则不会将其添加到结果数组中。如果您需要确保所有产品都具有所有属性,请在为产品创建数组时命名键:

$products[$key]=array('id'=>$key,'starting_price'=null,'electrical_support='null',etc).

当您迭代 $inproductarray 时,它们将被填充。

关于php - 根据 ID 将序列化的 JS 数组分组为相似的对象/数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26948036/

相关文章:

javascript - Sidr 无法在 WordPress 上运行

jquery - 检查输入字段的 "type"属性值

php - 在 Wordpress 管理仪表板中执行查询

javascript - 将鼠标悬停在 div 上时无法调整输入

java - 在 Android studio 日志中等待阻塞 GC Alloc

javascript - parseFloat() 没有解析我的数组中的所有字符串。 JavaScript

php - WooCommerce 预订 : adding and reordering item data in cart and checkout

php - Uniqid 每次返回相似的值

PHP + MySQL 问题 - 我哪里出错了?

arrays - 查询数组元素的值(PostgreSQL)