首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有回调函数的参数的PHP数组到JSON

带有回调函数的参数的PHP数组到JSON
EN

Stack Overflow用户
提问于 2019-04-26 18:19:34
回答 2查看 283关注 0票数 1

在我的PHP脚本中,我有一个类似于以下内容的数组:

代码语言:javascript
复制
$panorama = array(
    "default" => array(
        "firstScene" => 2,
        "author" => 'Felipe'
    ), 
    "scenes" => array(
        "circle" => array(
            "title" => "Title 1", 
            "hotSpots" => array(
                "pitch" => "-2.1",
                "createTooltipFunc" => "hotspot"
            )
        )
    )
);

这个数组将以json对象的形式传递给Javascript函数,如下所示:

代码语言:javascript
复制
pannellum.viewer('panorama', <?php echo json_encode($panorama); ?>);

参数createTooltipFunc必须接收名为hotspot的回调函数。因此,在最后的json中,当我将这个PHP数组传递给Javascript函数时,这个参数应该是这样的:"createTooltipFunc“:hotspot,没有双引号。我该怎么做?

为了提供更多信息,我正在尝试使用插件pannellum.js创建一个向导,并从mysql中获取我需要的json的所有信息。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-04-26 18:22:28

在Javascript变量之间保留一个Javascript变量,在它与pannellum(Assumes hotspot一起使用之前保持对象并更新属性)。

代码语言:javascript
复制
//  create Javascript object
var obj = <?php echo json_encode($panorama); ?>;

// update createTooltipFunc proeprty with the variable
// where variable name can be extract from $panorama
obj.scenes.circle.hotSpots.createTooltipFunc = <?php echo $panorama['scenes']['circle']['hotSpots']['createTooltipFunc']; ?>;

pannellum.viewer('panorama', obj);
票数 2
EN

Stack Overflow用户

发布于 2019-04-26 19:10:56

按照Pranav的建议,我必须将PHP数组放入javascript对象中,并循环它以找到正确的节点,然后替换新的旧值,如下所示:

代码语言:javascript
复制
var objTour = <?php echo json_encode($panorama); ?>;
            for (var [key, value] of Object.entries(objTour.scenes)) {
                var objdadosScene = value;
                for (var [key, value] of Object.entries(objdadosScene)) {
                    if(key == 'hotSpots'){
                        var objHotspot = objdadosScene.hotSpots;
                        for (var [key, value] of Object.entries(objHotspot)) {
                            var objDadosHotspot = value;
                            for (var [key, value] of Object.entries(objDadosHotspot)) {                             
                                objDadosHotspot['createTooltipFunc'] = hotspot;
                            }
                        }
                    }
                }
            }

我不知道这是否是实现这一结果的最佳方法,但它是有效的。谢谢!

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

https://stackoverflow.com/questions/55873065

复制
相关文章

相似问题

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