PHP require_once在我的代码中不起作用

时间:2015-06-07 01:51:15

标签: php

这可能是关于php的一个基本问题,但我无法弄清楚如何解决它。

好吧,我有一个名为globals.php的文件

<?php
$DATA = array(
    'first' => 'LOL',
    'second' => 'Whatever'
);
?>

我还有另一个文件(omg.php),其中包含以下功能:

<?php

require_once('globals.php');

function print_text_omg($selector = 0){
global $DATA; //added this line of code. NOW IT WORKS
$var = '';
if($selector == 0){
    $var = '';
}else{
    $var = 'Hi. ';
}

//$DATA is a variable from globals.php that is supposed to be declared in require_once('globals.php');
//$var is a variable inside the function print_text_omg
//I am trying to concatenate string $var with the string $DATA['first']

$finaltext = $var.$DATA['first'];
echo $finaltext;
}
?>

然后,在main.php中我有这个:

<?php 
include('omg.php');
print_text_omg();
print_text_omg(1);
?>

这应该打印如下:

//LOL
//Hi. LOL

相反,我有这个警告:

注意:未定义的变量:DATA in ...

$finaltext = $var.$DATA['first'];

的一部分

更新

感谢用户Casimir et Hippolyte的建议,我已编辑了我的功能,现在可以使用了。添加了适用于我的行。

3 个答案:

答案 0 :(得分:1)

它不起作用,因为$DATA不属于您的功能范围。

要在函数中使$DATA可用,必须将其作为参数传递给函数,或将$DATA定义为全局变量。

问题与require_once无关。

http://php.net/manual/en/language.variables.scope.php

答案 1 :(得分:0)

错误是正确的,首先我无法找到您在哪里声明$var(也许它应该是某个类的对象?)并且$var不包含$ DATA数组,最后,php中的.运算符用于连接字符串,对象导航是->运算符

答案 2 :(得分:0)

您尚未声明变量$var,而.是php的连接运算符。尝试将代码更改为此

$finaltext = $DATA['first'];