【问题标题】:Get form serialize value from the array list从数组列表中获取表单序列化值
【发布时间】:2022-01-06 10:36:11
【问题描述】:

我有一个这样的数组:

Array
(
    [action_name] => edit
    [formData] => color=red&size=full&symmetry=square&symmetry=circle&symmetry=oval
)

这里,表单数据是使用JS的serialize方法来的,所以显示如上。我想从formData 键中获取每个数据。我怎样才能得到它?

我试过了:

$_POST['formData']['color']

但这不起作用。我认为获取这个的方法会有所不同。我该怎么做?

【问题讨论】:

    标签: php arrays serialization form-serialize


    【解决方案1】:

    您可以使用parse_​str 来“解析字符串,就像它是通过 URL 传递的查询字符串一样,并在当前范围内设置变量(如果提供了结果,则在数组中)。

    <?php
    $_POST = [
        'action_name' => 'edit',
        'formData' => 'color=red&size=full&symmetry=square',
    ];
    parse_str($_POST['formData'], $parsed);
    print_r($parsed);
    

    会输出

    Array
    (
        [color] => red
        [size] => full
        [symmetry] => square
    )
    

    编辑: symmetry 有多个值,您的查询应如下所示:

    <?php
    $_POST = [
        'action_name' => 'edit',
        'formData' => 'color=red&size=full&symmetry[]=square&symmetry[]=circle&symmetry[]=oval',
    ];
    parse_str($_POST['formData'], $parsed);
    print_r($parsed);
    

    这将输出:

    Array
    (
        [color] => red
        [size] => full
        [symmetry] => Array
            (
                [0] => square
                [1] => circle
                [2] => oval
            )
    )
    

    【讨论】:

    • 另外,我忘了提到 symmetry 这里来自复选框,所以它可以有多个值,如圆形、方形、椭圆形、矩形等。所以,考虑到这里的变化很小答案也适用?
    • 您可以尝试一下,也可以编辑您的问题并发布您的“最终”formData。此代码适用于您此时发布的问题
    • 我已经更新了这个问题。请看看。这是对复选框进行多项选择时的最终数据。
    • 拥有symmetry=square&amp;symmetry=circle&amp;symmetry=oval 将使symmetry 保留最后一个值oval。您的查询应类似于 color=red&amp;size=full&amp;symmetry[]=square&amp;symmetry[]=circle&amp;symmetry[]=oval 以使其正常工作
    • 更新了我的答案以反映这一点
    猜你喜欢
    • 2018-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-28
    相关资源
    最近更新 更多