首页 > 解决方案 > 将 HTML 元素名称(如 abc[0])转换为 php 中的数组

问题描述

试图将传入的表单值从 Ajax 转换为 Php 数组,但它似乎表现得像字符串

使用下面的 reg ex 如果我有方便的输入名称,我可以通过循环手动替换键,但我认为这不是最好的方法,请建议

preg_match('/^A\[\d+\]/', $key);
preg_match('/^B\[\d+\]/', $key);

我的表格是这样的

<input type="text" id="c[0]" name="c[0]" value="">

这就是我从 Ajax 到 PHP 的传入表单值的样子

Array
(
    [A[0]] => Test1
    [B[0]] => Test2
    [C[0]] => Test3
    [D1[0]] => Test4
    [A[1]] => Test1
    [B[1]] => Test2
    [C[1]] => Test3
    [D1[1]] => Test4
)

我想将传入的值转换为 php 数组,如下所示

A[0] = Test1
A[1] = Test1
B[0] = Test2
B[1] = Test2

标签: php

解决方案


正在使用 json_encode 将表单元素发送到 Ajax,因此必须在传入时进行解码,然后 parse_str 完成了这项工作,将字符串转换为数组,无法避免 foreach 循环

        $p2 = json_decode($_GET['form_ele1'], true);

        $p4 = array();
        foreach($p2 as $key => $value){
            $tkey = $key;
            parse_str($tkey, $arr);
            foreach($arr as $key2 => $value2){
                $p4[$key2][key($value2)] = $value;
            } 
        } 
        $p2 = $p4;

推荐阅读