我可以从单独的php文件中设置一个变量吗?

时间:2014-03-14 17:25:02

标签: php arrays scope globals

让我说我有一个文件effects.php,里面有一个数组,如

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

我还有另一个文件display.php,它们都获得了级别并显示了攻击。

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

我尝试了上面的设置,即使我在两个文件中声明全局,也会给出" Deals damage"如果可能的话,我怎样才能让它发挥作用?

2 个答案:

答案 0 :(得分:4)

没有。您正在定义$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'];

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

答案 1 :(得分:3)

考虑使用level作为参数。

effects.php:

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

Display.php的:

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