我无法解释我想做什么,但我仍然尝试:
我正在使用外部API来响应巨大的json对象。我想以动态方式使用PHP获取部分内容。例如,我通常会使用$json->stats->scores->score;
来获得分数。
现在我想让用户选择要显示的不同统计数据,因此在他们的管理页面上他们选择“分数”,“杀死”,“胜利”,...... - 他们的选择将被保存在数据库中(在字符串如Score,Kills,Wins
)。稍后,我将使用explode(',', $selection);
接收表示所有这些选择的数组。
最后应该回应所有选定的统计数据 - 这是我需要帮助的部分。
$json->stats->scores->score // Score
$json->stats->kills // Kills
$json->stats->numWins // Wins
这就是我需要如何处理这些值中的每一个。现在有没有办法创建对这些的引用,所以我可以做类似下面的事情?
$js['Score']; // = $json->stats->scores->score
$js['Kills']; // = $json->stats->kills
$js['Wins']; // = $json->stats->numWins
我希望你理解我的解释 提前谢谢。
答案 0 :(得分:2)
首先阅读PHP手册中的References Explained。
是的,您可以使用&
创建参考。您也可以 - 如果您不需要更改原始值 - 只需放出&
并以完全常规的方式创建数组。
代码示例:
<?php
$json = (object)array(
'stats' => (object)array(
'scores' => (object)array(
'score' => 13
),
'kills' => 10,
'numWins' => 2
)
);
$js = array(
'Score' => &$json->stats->scores->score,
'Kills' => &$json->stats->kills,
'Wins' => &$json->stats->numWins
/* ^ Use the & for references */
);
print_r($js);
$json->stats->kills = 5;
print_r($js);
$js['Kills'] = 2;
var_dump($json->stats->kills);
?>
<强>输出强>:
Array
(
[Score] => 13
[Kills] => 10
[Wins] => 2
)
Array
(
[Score] => 13
[Kills] => 5
[Wins] => 2
)
int(2)