我们假设您有一个数字索引的数组,看起来像这样(通过RedBeanPHP's
find
操作获得):
[
[33=>["name"=>"John", "age"=25]],
[55=>["name"="Jane", "age"=23]]
]
其中33和55是每个2" bean的id's
" (基本上是关联数组)。
并且您希望将数组转换为JSON,以便将其发送到JavaScript客户端并将其作为JavaScript对象使用。
但你不能简单地JSON_encode
因为你最终会在JavaScript对象中使用数字键,而JavaScript并不喜欢这样。
您可以使用什么策略通过JSON将此数组转换为JavaScript对象,以便在JavaScript端提供所有数据(包括每个bean的id
)? (对于那里的RedBeanPHP
人:我希望有一种原生的RedBeanPHP
方法可以做到这一点,但我还没有找到。)
答案 0 :(得分:2)
一个选项是使用array_map
循环遍历数组。使用array_values
从数组中获取所有值并以数字方式对数组进行索引。
$arr = [
[33=>["name"=>"John", "age"=>25]],
[55=>["name"=>"Jane", "age"=>23]]
];
$result = array_map(function($o){
return array_values($o)[0];
}, $arr);
echo json_encode( $result );
这将导致:
[{"name":"John","age":25},{"name":"Jane","age":23}]
答案 1 :(得分:1)
对于你的关联数组:
$array = array(33 => array("name" => "John", "age" => 25), 55 => array("name" => "Jane", "age" => 23));
PHP json_encode函数:
$good_json = json_encode($array, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_NUMERIC_CHECK);
为JavaScript对象生成JSON(字符串“name”:值对):
{"33":{"name":"John","age":25},"55":{"name":"Jane","age":23}}
答案 2 :(得分:1)
简单。你应该试试这个。首先遍历外部数组,然后在内部获取数据的id
。将id
添加到其他值并将该数组推送到结果值。
$result = array();
$arr = [[33=>["name"=>"John", "age"=>25]],[55=>["name"=>"Jane", "age"=>23]]];
foreach ($arr as $ar) {
foreach ($ar as $key => $value) {
$value['id'] = $key;
array_push($result, $value);
}
}
echo json_encode($result);
输出: -
[{"name":"John","age":25,"id":33},{"name":"Jane","age":23,"id":55}]