Json_encode / JMS_Serializer,保留数字键

时间:2017-12-20 10:30:12

标签: arrays json jmsserializerbundle

我在symfony中有一个后端API,在vueJs中有前端, 在我的应用程序中,我有一个获取表单定义的路线...

但是对于entityType,我需要有选择列表,所以我这样做:

$result['choice'] = array_reduce($config->getOption('choice_list')
                    ->getChoices(), function ($carry, $item) {
                        return array_merge($carry, [(string)$item->getId() => (string)$item]);
                    }, []);

理论上,这回归了:

[ "0" => "value1", "1" => "value2", "3" => "value3" ... ]
( note, key are not necessary continue)

在实践中,调试器说“0”是数字,所以是int! 并且JMS或json_encode做同样的事情......在序列化之后,我有一个没有密钥的简单数组!

如何使用JMS或本机PHP函数获取真正的关联数组?

1 个答案:

答案 0 :(得分:0)

$result['choice'] = array_reduce($config->getOption('choice_list')
                    ->getChoices(), function ($carry, $item) {
                        return array_merge($carry, ["0{$item->getId()}" => (string)$item]);
                    }, []);

conc的“0”前面的id做了诀窍:))

我的表单中有一个“假”字符串ID ...但是当我提交表单时... symfony将“01”转换为int ^^