php - PHP将自定义数组转换为特定对象结构
问题描述
我有一组数据需要转换为特定的结构,以便由 3rd 方插件正确加载。
我能够实现的当前最接近的数组在下面,从这里我被卡住了。
php数组
[
[
["item1"],
["itemname"],
["item desc"],
["05\/14\/2014"]
],
[
["item12"],
["itemname2"],
["item desc2"],
["05\/14\/2014"]
]
]
json_encoded
[
0 => [0 => "Value1", 1 => "Value2", 2 => "Value3" ],
1 => [0 => "Test", 1 => "Test2", 2 => "Test3" ],
2 => [0 => "Random1", 1 => "Random2", 2 => "Random3" ]
]
我如何将它转换成这样的结构,
[
{"0":"Value1","1":"Value2", "2":"Value3"},
{"0":"Test", "1":"Test2","2":"Test3"},
{"0":"Random1","1":"Random2","2":"Random3"},
]
任何想法将不胜感激,非常感谢!
解决方案
您可以通过将所有数组元素转换为之前的对象来创建表示对象数组的 JSON 字符串json_encode
。但是,这将给出字符串键,而不是数字键(不是有效的 JSON):
$array = [
0 => [0 => "Value1", 1 => "Value2", 2 => "Value3" ],
1 => [0 => "Test", 1 => "Test2", 2 => "Test3" ],
2 => [0 => "Random1", 1 => "Random2", 2 => "Random3" ]
];
foreach ($array as &$arr) {
$arr = (object)$arr;
}
echo json_encode($array, JSON_PRETTY_PRINT);
输出:
[
{
"0": "Value1",
"1": "Value2",
"2": "Value3"
},
{
"0": "Test",
"1": "Test2",
"2": "Test3"
},
{
"0": "Random1",
"1": "Random2",
"2": "Random3"
}
]
更新
根据对问题的编辑,您似乎正在寻找这个:
$array = [
[
["item1"],
["itemname"],
["item desc"],
["05/14/2014"]
],
[
["item12"],
["itemname2"],
["item desc2"],
["05/14/2014"]
]
];
foreach ($array as &$arr) {
$arr = (object)array_map(function ($a) { return $a[0]; }, $arr);
}
echo json_encode($array, JSON_PRETTY_PRINT);
输出:
[
{
"0": "item1",
"1": "itemname",
"2": "item desc",
"3": "05\/14\/2014"
},
{
"0": "item12",
"1": "itemname2",
"2": "item desc2",
"3": "05\/14\/2014"
}
]
3v4l.org 上的演示
推荐阅读
- python - Python:将列表转换为变量中的逗号分隔值以传递 where IN 条件
- c# - 检查用户名是否在数据库中可用
- jquery - Firefox 浏览器上的 Dialogflow Messenger 高度自定义问题
- reactjs - Apollo 客户端 fetchPolicy 问题 - 查询调用了两次
- python - 在将数据输入 FFT 用于音频频谱分析仪之前,使用 python 将 wav 文件转换为 csv 文件
- ambiguous - NSPredicateEditorRowTemplate() 给出语法错误“表达式类型不明确,没有更多上下文”
- flutter - 如何创建一个价格变量,在展开时在每个列表图块中都有不同的值?
- javascript - 放大器故事放大器视频“noaudio”属性未应用
- r - R将向量的三个值的所有组合添加到三维数组
- c++ - GDI+ 返回图像文件的实际大小或 0