PHP 数组到 JSON 具有带回调函数的参数
PHP array to JSON having a parameter with a callback function
在我的 PHP 脚本中,我有一个类似于这样的数组:
$panorama = array(
"default" => array(
"firstScene" => 2,
"author" => 'Felipe'
),
"scenes" => array(
"circle" => array(
"title" => "Title 1",
"hotSpots" => array(
"pitch" => "-2.1",
"createTooltipFunc" => "hotspot"
)
)
)
);
此数组将作为 json 对象传递给 Javascript 函数,如下所示:
pannellum.viewer('panorama', <?php echo json_encode($panorama); ?>);
参数createTooltipFunc必须接收一个名为hotspot的回调函数。所以,在最后的 json 中,当我将这个 PHP 数组传递给 Javascript 函数时,这个参数应该是这样的: "createTooltipFunc" : hotspot,没有双引号。我该怎么做?
只是为了提供更多信息,我正在尝试使用插件 pannellum.js 创建游览,并且我正在获取 json 我需要 mysql 数据库。
保留一个 Javascript 变量,在它之间保留对象并在 属性 与 pannellum 一起使用之前更新 属性(假设 hotspot
是一个变量)。
// 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);
按照 Pranav 的建议,我不得不将 PHP 数组放入 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;
}
}
}
}
}
我不知道这是否是实现结果的最佳方式,但它确实有效。谢谢!
在我的 PHP 脚本中,我有一个类似于这样的数组:
$panorama = array(
"default" => array(
"firstScene" => 2,
"author" => 'Felipe'
),
"scenes" => array(
"circle" => array(
"title" => "Title 1",
"hotSpots" => array(
"pitch" => "-2.1",
"createTooltipFunc" => "hotspot"
)
)
)
);
此数组将作为 json 对象传递给 Javascript 函数,如下所示:
pannellum.viewer('panorama', <?php echo json_encode($panorama); ?>);
参数createTooltipFunc必须接收一个名为hotspot的回调函数。所以,在最后的 json 中,当我将这个 PHP 数组传递给 Javascript 函数时,这个参数应该是这样的: "createTooltipFunc" : hotspot,没有双引号。我该怎么做?
只是为了提供更多信息,我正在尝试使用插件 pannellum.js 创建游览,并且我正在获取 json 我需要 mysql 数据库。
保留一个 Javascript 变量,在它之间保留对象并在 属性 与 pannellum 一起使用之前更新 属性(假设 hotspot
是一个变量)。
// 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);
按照 Pranav 的建议,我不得不将 PHP 数组放入 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;
}
}
}
}
}
我不知道这是否是实现结果的最佳方式,但它确实有效。谢谢!