首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将命名空间PHP转换为JSON

如何将命名空间PHP转换为JSON
EN

Stack Overflow用户
提问于 2015-08-25 20:44:38
回答 1查看 161关注 0票数 0

我有以下情况:

代码语言:javascript
复制
$class = 'Main\Entity\Redaction'; #or anything else namespaced class
$nameClass = explode('\\', $class);
$jsonNamespace = [];
if (!empty($nameClass[0])) {
    $jsonNamespace[$nameClass[0]] = [];
    if (!empty($nameClass[1])) {
        $jsonNamespace[$nameClass[0]][$nameClass[1]] = [];
        if (!empty($nameClass[2])) {
            $jsonNamespace[$nameClass[0]][$nameClass[1]][$nameClass[2]] = ['#wherever'];
        }
    }
}

我想声明一个命名空间对象JSON。就像这样:

代码语言:javascript
复制
{
     Main: {
          Entity: {
               Redaction: ['#wherever']
          }
     }
}

但没有太多的“如果”,某种递归的东西。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-25 20:57:37

您可以使用递归进行此操作,但另一种方法是使用引用。向数组添加一个新级别,然后简单地将引用向下移到该新元素。

代码语言:javascript
复制
<?php
function buildArray(array $keys, $value){
    $ret = array();
    $ref =& $ret;

    foreach($keys as $key){
        // Add the next level to the array
        $ref[$key] = array();
        // Then shift the reference, so that the next
        // iteration can add a new level
        $ref =& $ref[$key];
    }

    // $ref is a reference to the lowest level added
    $ref = array($value);

    // Not totally sure if this is needed
    unset($ref);

    return $ret;
}

$class = 'Main\Entity\Redaction';
$jsonNamespace = buildArray(explode('\\', $class), array('#wherever'));

var_dump($jsonNamespace);

演示:http://codepad.org/f7O0Qy3D

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32213705

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档