如何使用json_encode()将此关联数组转换为此json输出

时间:2014-03-19 03:32:22

标签: php json associative-array

我有这个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。非常感谢你。

3 个答案:

答案 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 );