【问题标题】:How to convert this associative array into this json output using json_encode()如何使用 json_encode() 将此关联数组转换为此 json 输出
【发布时间】:2014-03-19 03:32:21
【问题描述】:

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

【问题讨论】:

  • 尝试让我们的 PHP 模型与您的 JSON 模型保持一致,您将免费获得其余的。请注意,您显示的 JSON 是散列(关联数组)的 array,但在 PHP 中您没有捕捉到这种差异。
  • 你的意思是 php 关联数组对于我这种 JSON 输出效率低下吗?对不起,我对php不熟悉。
  • 不,我只是说您需要重新格式化您的数据,使其与 JSON 格式相同。

标签: php json associative-array


【解决方案1】:
<?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"}]

【讨论】:

    【解决方案2】:

    您可以使用 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));   
    

    【讨论】:

      【解决方案3】:

      所以首先要做的事情:

      使用 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 );
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-11-10
        • 2021-07-14
        • 2013-12-13
        • 2015-02-05
        • 1970-01-01
        • 1970-01-01
        • 2023-02-23
        相关资源
        最近更新 更多