为了账号安全,请及时绑定邮箱和手机立即绑定

将 JSON 字符串转换为 PHP 代码块

将 JSON 字符串转换为 PHP 代码块

PHP
杨魅力 2021-06-16 16:34:06
有没有一种优雅的方式来转换这个 JSON 字符串:{  "my_index": 1,  "first_name": "John",  "last_name": "Smith",  "address": {    "address1": "123 Main St",    "address2": "PO Box 123",    "city": "Anywhere",    "state": "CA",    "zip": 12345  }}到这个 PHP 代码块:$data = array();$data["my_index"] = 1;$data["first_name"] = "John";$data["last_name"] = "Smith";$data["address"] = array();$data["address"]["address1"] = "123 Main St";$data["address"]["address2"] = "PO Box 123";$data["address"]["city"] = "Anywhere";$data["address"]["state"] = "CA";$data["address"]["zip"] = 12345;基本上,构建代码以粘贴到其他内容中。我不想要一个 json_decode() 的对象。我真的想以一串 PHP 代码结束,而不是一个 PHP 对象!
查看完整描述

2 回答

?
倚天杖

TA贡献1828条经验 获得超3个赞

$string = '{

    "my_index": 1,

    "first_name": "John",

    "last_name": "Smith",

    "address": {

        "address1": "123 Main St",

        "address2": "PO Box 123",

        "city": "Anywhere",

        "state": "CA",

        "zip": 12345

    }

}';

$recursiveIterator = new RecursiveIteratorIterator(new RecursiveArrayIterator(json_decode($string, true)), RecursiveIteratorIterator::SELF_FIRST);

$data = array('$data = array();');


foreach ($recursiveIterator as $key => $value) {

    $currentDepth = $recursiveIterator->getDepth();

    $keys = array();


    // Traverse up array to get keys

    for ($subDepth = $currentDepth; $subDepth >= 0; $subDepth--) {

        $keys[] = $recursiveIterator->getSubIterator($subDepth)->key();

    }


    if (is_array($value)) {

        $data[] = '';

    }


    $data[] = '$data["' . implode('"]["', array_reverse($keys)) . '"] = ' . (!is_array($value) ? is_int($value) ? $value : '"' . $value . '"' : 'array()') . ';';

}


echo '<pre>';

print_r(implode("\n", $data));

echo '</pre>';


查看完整回答
反对 回复 2021-06-19
?
弑天下

TA贡献1818条经验 获得超8个赞

与您之后的内容并非 100% 相同,但它有效地创建了一段您可以使用的 PHP 代码。主要是将其解码为PHP数组,然后用于var_export()输出结果数组。在它周围添加一些样板以提供一些代码......


$data='{

  "my_index": 1,

  "first_name": "John",

  "last_name": "Smith",

  "address": {

    "address1": "123 Main St",

    "address2": "PO Box 123",

    "city": "Anywhere",

    "state": "CA",

    "zip": 12345

  }

}';

echo '$data = '.var_export(json_decode($data, true), true).';';

给你


$data = array (

  'my_index' => 1,

  'first_name' => 'John',

  'last_name' => 'Smith',

  'address' => 

  array (

    'address1' => '123 Main St',

    'address2' => 'PO Box 123',

    'city' => 'Anywhere',

    'state' => 'CA',

    'zip' => 12345,

  ),

);



查看完整回答
反对 回复 2021-06-19
  • 2 回答
  • 0 关注
  • 147 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信