【问题标题】:Can I set a variable inside an array from a separate php file?我可以在一个单独的 php 文件中的数组中设置一个变量吗?
【发布时间】:2014-04-20 03:30:49
【问题描述】:

假设我有一个文件 effects.php,里面有一个数组

$techniqueDescriptions = array("damage" => "Deals ".$level." damage.");

我还有另一个文件 display.php,它既可以获取级别,也可以显示攻击。

$level = $user->data["level"];
echo $techniqueDescriptions["damage"];

我尝试了上面的设置,它给出了“造成损害”,即使我在两个文件中都声明它是全局的。如果可能的话,我怎样才能让它工作?

【问题讨论】:

    标签: php arrays scope globals


    【解决方案1】:

    没有。您正在定义 $level AFTER 数组已由 PHP 解析/执行/构造。 PHP 无法“及时回溯”以追溯插入 $level 的值,而该值在您尝试将 $level 插入数组时不存在。

    你必须做类似的事情

    $level = 'foo';
    include('array_gets_defined_here.php');
    echo $techniqueDescriptions['damage'];
    

    反其道而行之:

    include('array_gets_defined_here.php');
    $level = 'foo';
    echo $techniqueDescriptions['damage'];
    

    让你进入时间旅行的状态。

    【讨论】:

    • 感谢您的解释!我现在明白了 =)
    【解决方案2】:

    考虑使用级别作为参数。

    效果.php:

    function techniqueDescriptions($level) {
      return array("damage" => "Deals ".$level." damage.");
    }
    

    display.php:

    require_once('effects.php')
    $level = $user->data["level"];
    echo techniqueDescriptions($level)["damage"];
    

    【讨论】:

    • 我会试试这个。谢谢!
    猜你喜欢
    • 2017-05-08
    • 1970-01-01
    • 2015-07-20
    • 1970-01-01
    • 2017-10-11
    • 2021-09-16
    • 1970-01-01
    • 2022-01-09
    • 1970-01-01
    相关资源
    最近更新 更多