Json_encode / JMS_Serializer, 保留数字键
Json_encode / JMS_Serializer, keep numeric key
我在 symfony 中有一个后端 API,在 vueJs 中有一个前端,
在我的应用程序中,我有一个获取表单定义的路径 ...
但是对于实体类型,我需要有选择列表,所以我这样做:
$result['choice'] = array_reduce($config->getOption('choice_list')
->getChoices(), function ($carry, $item) {
return array_merge($carry, [(string)$item->getId() => (string)$item]);
}, []);
理论上这 return 类似于:
[ "0" => "value1", "1" => "value2", "3" => "value3" ... ]
( note, key are not necessary continue)
实际上,调试器说“0”是数字,所以是 int!
JMS 或 json_encode 做同样的事情......在序列化之后,我有一个没有键的简单数组!
如何欺骗 JMS 或本机 PHP 函数来获取真正的关联数组?
$result['choice'] = array_reduce($config->getOption('choice_list')
->getChoices(), function ($carry, $item) {
return array_merge($carry, ["0{$item->getId()}" => (string)$item]);
}, []);
在 id 前面连接“0”就可以了:)
我的表单中有一个 "fake" 字符串 ID ...但是当我提交表单时...symfony 将“01”转换为 int ^^
我在 symfony 中有一个后端 API,在 vueJs 中有一个前端, 在我的应用程序中,我有一个获取表单定义的路径 ...
但是对于实体类型,我需要有选择列表,所以我这样做:
$result['choice'] = array_reduce($config->getOption('choice_list')
->getChoices(), function ($carry, $item) {
return array_merge($carry, [(string)$item->getId() => (string)$item]);
}, []);
理论上这 return 类似于:
[ "0" => "value1", "1" => "value2", "3" => "value3" ... ]
( note, key are not necessary continue)
实际上,调试器说“0”是数字,所以是 int! JMS 或 json_encode 做同样的事情......在序列化之后,我有一个没有键的简单数组!
如何欺骗 JMS 或本机 PHP 函数来获取真正的关联数组?
$result['choice'] = array_reduce($config->getOption('choice_list')
->getChoices(), function ($carry, $item) {
return array_merge($carry, ["0{$item->getId()}" => (string)$item]);
}, []);
在 id 前面连接“0”就可以了:)
我的表单中有一个 "fake" 字符串 ID ...但是当我提交表单时...symfony 将“01”转换为 int ^^