创建对象的引用

时间:2013-12-28 17:14:06

标签: php arrays

我无法解释我想做什么,但我仍然尝试:

我正在使用外部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

我希望你理解我的解释 提前谢谢。

1 个答案:

答案 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)

DEMO