数组内的数组到Object

时间:2018-04-05 00:19:45

标签: php arrays ajax object

使用此代码通过ajax发送params:

 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
    
  2. 因为我需要其他不同的参数来进行ajax调用,是我序列化数据的方式+转换为json最佳实践吗?如果没有,请给我建议。感谢

1 个答案:

答案 0 :(得分:0)

对于这个,您可以使用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