【问题标题】:Array inside array to Object数组内的数组到对象
【发布时间】:2018-04-05 00:19:45
【问题描述】:

使用此代码通过 ajax 发送参数后:

 paramsToSend = $form.serializeArray();
 params = JSON.stringify(paramsToSend)

我在服务器端解码 json 后得到了这个数组:

 Array
 (
    [0] => Array
      (
        [name] => name
        [value] => Naomi
      )

    [1] => Array
      (
        [name]  => password
        [value] => test123456
      )

[2] => Array
    (
        [name] => email
        [value] => naomitest@gmail.com
    )

[3] => Array
    (
        [name] => code
        [value] => test123456@test123456
    )

[4] => Array
    (
        [name]  => phone
        [value] => 423523545435
    )

)
  1. 我可以将它转换为 Object 并获得这样的值吗:

    User.name //will print Naomi
    User.password // will print test123456
    

因为我需要其他不同的参数来进行 ajax 调用,所以我 serializeArray 数据 + 转换为 json 最佳实践的方式是什么?如果没有请给我建议。谢谢

【问题讨论】:

  • 在哪里转换为对象?在 PHP 方面?如果是,请检查stackoverflow.com/questions/5397758/json-decode-to-custom-class
  • 你可以遍历它并构建一个对象,不是吗?
  • 你想在哪里执行User.password?在 javascript 或服务器上?
  • @ariefbayu,我想在服务器上获取数据,它不需要对象,但我发现通过键获取值比将其保留为数组并且很难循环它更容易.

标签: php arrays ajax object


【解决方案1】:

对于这个,您可以使用array_column 提取键和值,然后使用array_combine 将它们组合成键/值数组,然后使用ArrayObject 使其成为数组或对象。

例如:

<?php
$data = [
    ['name' => 'name', 'value' => 'Naomi'],
    ['name' => 'password', 'value' => 'test123456'],
    ['name' => 'email', 'value' => 'naomitest@gmail.com'],
    ['name' => 'code', 'value' => 'test123456@test123456'],
    ['name' => 'phone', 'value' => 423523545435]
];

$data = new ArrayObject(
    array_combine(
        array_column($data, 'name'),
        array_column($data, 'value')
    )
);
$data->setFlags(ArrayObject::STD_PROP_LIST|ArrayObject::ARRAY_AS_PROPS);

echo $data->name; // Naomi
echo $data['name']; // Naomi

https://3v4l.org/oBbd0

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-08
    • 1970-01-01
    • 1970-01-01
    • 2022-11-19
    • 2017-10-11
    • 1970-01-01
    相关资源
    最近更新 更多