我有这个php关联数组。
array(
'Location_1' => 'Link_1',
'Location_2' => 'Link_2'
)
我想使用看起来像这样的json_encode()将其转换为json输出;
[{"Location_name":"Location_1","Link_name":"Link_1"},{"Location_name":"Location_2","Link_name":"Link_2"}]
如何做到这一点?对我来说,具有挑战性的部分似乎是如何在前面添加Location_name和Link_name。非常感谢你。
答案 0 :(得分:6)
<?php
// original array
$a = array(
'Location_1' => 'Link_1',
'Location_2' => 'Link_2'
);
// transform
$b = array();
foreach($a as $key=>$value) {
$b[] = array('Location_name'=>$key, 'Link_name'=>$value);
}
// output
echo json_encode($b);
?>
结果:
[{"Location_name":"Location_1","Link_name":"Link_1"},{"Location_name":"Location_2","Link_name":"Link_2"}]
答案 1 :(得分:1)
您可以使用StdClass匿名对象。
<?php
$newArray = array();
$array = array(
'Location_1' => 'Link_1',
'Location_2' => 'Link_2'
);
foreach ($array as $key => $value) {
$object = new StdClass();
$object->Location_name = $key;
$object->Link_name = $value;
$newArray[] = $object;
}
var_dump(json_encode($newArray));
答案 2 :(得分:1)
首先要做的事情是:
使用类似于
的json_encode()将其转换为json输出
这是不可能的。 json_encode
只是将数组编码为JSON,您需要自己进行格式化工作。
array_map
应该可以做到这一点。
试试这个:
$arr = array(
'Location_1' => 'Link_1',
'Location_2' => 'Link_2'
);
$output = array_map(
function( $key, $val ){
return array(
"Location_name" => $key,
"Link_name" => $val
);
}, array_keys( $arr ), $arr );
echo json_encode( $output );