Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用include将数组从一个文件传递到另一个文件_Php_Include - Fatal编程技术网

Php 使用include将数组从一个文件传递到另一个文件

Php 使用include将数组从一个文件传递到另一个文件,php,include,Php,Include,如何使用包含PHP语言将数组从一个文件传递到另一个文件? 我有一个带有某种语言数组(language/langen.php)的文件: 在其他文件中,我有: include base_url().'language/lang'.$_COOKIE['lang'].'.php'; var_dump($lang); *(我应对代码的错误-正确的是var_dump($lang))* 但它告诉我一个错误: A PHP Error was encountered Severity: Notice Messa

如何使用包含PHP语言将数组从一个文件传递到另一个文件? 我有一个带有某种语言数组(language/langen.php)的文件:

在其他文件中,我有:

include base_url().'language/lang'.$_COOKIE['lang'].'.php';
var_dump($lang);
*(我应对代码的错误-正确的是var_dump($lang))* 但它告诉我一个错误:

A PHP Error was encountered
Severity: Notice
Message: Undefined variable: lang
如何解决这个问题?我做错了什么?

不应该吗

include base_url().'language/lang'.$_COOKIE['lang']['Here'].'.php';
否则它只会返回array()

,不是吗

include base_url().'language/lang'.$_COOKIE['lang']['Here'].'.php';

或者它只返回array()

首先,如果您发布的代码中没有这样的内容,我看不出var转储变量$data有什么意义。如果您的浏览器中有一个名为“lang”的cookie,那么您应该很好。你可以随时检查这个

var_dump($GLOBALS['lang']);

在你的代码中。它应该打印lang*.php文件中的值数组。

首先,如果您发布的代码中没有这样的内容,我看不出var转储变量$data有什么意义。如果您的浏览器中有一个名为“lang”的cookie,那么您应该很好。你可以随时检查这个

var_dump($GLOBALS['lang']);
在你的代码中。它应该打印lang*.php文件中的值数组。

首先: 千万不要在include语句中直接使用cookie值——很容易在应用程序中伪造cookie并弄糟

我想您没有名为lang的cookie,或者变量
$lang
以前从未初始化过

要检查cookie是否存在并且格式是否正确,可以执行以下操作:

// set default lang code
$langCode = 'en';

// check if cookie exists and if contains string build from 2 characters from range a-z
// check also if file exists
if (isset($_COOKIE['lang'] && preg_match('/^[a-z]{2}$/', $_COOKIE['lang']) &&
    file_exists(base_url().'language/lang'.$_COOKIE['lang'].'.php')) {
    $langCode = $_COOKIE['lang'];
}
include base_url().'language/lang'.$langCode.'.php';
在包含的文件中,您应该检查变量
$lang
是否存在

if (!isset($lang)) $lang = array();
$lang['Here'] = 'Here';
$lang['Date'] = "Date";
另外,我认为在这里使用
global
是毫无意义的,因为从您的示例来看,它似乎是相同的范围

无论如何,对我来说,更清洁的解决方案是:

// first_file.php
$langCode = 'en';
if (isset($_COOKIE['lang'] && preg_match('/^[a-z]{2}$/', $_COOKIE['lang']) &&
    file_exists(base_url().'language/lang'.$_COOKIE['lang'].'.php')) {
    $langCode = $_COOKIE['lang'];
}
$lang = include base_url().'language/lang'.$langCode.'.php';


// langen.php
return array(
    'Date' => 'Date',
    'Here' => 'Here',
);

编辑

还有一件事-如果base_url()返回web url(如…),那么它也是错误的(也可能导致问题,因为langen.php以这种方式包含时,至少会包含通知消息)-首先应包含在有效的文件路径中

千万不要在include语句中直接使用cookie值——很容易在应用程序中伪造cookie并弄糟

我想您没有名为lang的cookie,或者变量
$lang
以前从未初始化过

要检查cookie是否存在并且格式是否正确,可以执行以下操作:

// set default lang code
$langCode = 'en';

// check if cookie exists and if contains string build from 2 characters from range a-z
// check also if file exists
if (isset($_COOKIE['lang'] && preg_match('/^[a-z]{2}$/', $_COOKIE['lang']) &&
    file_exists(base_url().'language/lang'.$_COOKIE['lang'].'.php')) {
    $langCode = $_COOKIE['lang'];
}
include base_url().'language/lang'.$langCode.'.php';
在包含的文件中,您应该检查变量
$lang
是否存在

if (!isset($lang)) $lang = array();
$lang['Here'] = 'Here';
$lang['Date'] = "Date";
另外,我认为在这里使用
global
是毫无意义的,因为从您的示例来看,它似乎是相同的范围

无论如何,对我来说,更清洁的解决方案是:

// first_file.php
$langCode = 'en';
if (isset($_COOKIE['lang'] && preg_match('/^[a-z]{2}$/', $_COOKIE['lang']) &&
    file_exists(base_url().'language/lang'.$_COOKIE['lang'].'.php')) {
    $langCode = $_COOKIE['lang'];
}
$lang = include base_url().'language/lang'.$langCode.'.php';


// langen.php
return array(
    'Date' => 'Date',
    'Here' => 'Here',
);

编辑


还有一件事-如果base_url()返回web url(如…),那么它也是错误的(也可能导致问题,因为langen.php以这种方式包含时至少会包含通知消息)-应该包含在有效的文件路径中

我想您的浏览器中没有类似“lang”的cookie。这就是他所说的。试试echo$\u COOKIE['lang']自己看看。我想你的浏览器中没有像“lang”这样的COOKIE。这就是他所说的。请尝试
echo$\u COOKIE['lang']
并亲自查看。在$\u COOKIE['lang']中,我输入了php将包含的语言文件的值。当我打印r($_COOKIE['lang'])时,它给我一个值1,它是语言文件(lang1.php)的名称。在$_COOKIE['lang']中,我把php将包含的语言文件的值放入。当我打印_r($_COOKIE['lang'])时,它给了我一个值1,它是语言文件的名称(lang1.php).var_dump($GLOBALS['lang']);它不会将lang*.php中的值打印给我。它只显示了一个错误:“遇到PHP错误严重性:注意消息:未定义索引:lang”。我把它放在include文件之后。把它放在include文件之后是很正确的,但是如果你不能包含你的文件,那么就不会打印任何东西,相信我。如果您直接包含您的文件(没有此cookie行?),是否打印出一些内容。我模拟了这种情况,在我这方面效果很好。您的代码中(在这些行之上)是否有您没有告诉我们的东西,这可能会导致此类问题;它不会将lang*.php中的值打印给我。它只显示了一个错误:“遇到PHP错误严重性:注意消息:未定义索引:lang”。我把它放在include文件之后。把它放在include文件之后是很正确的,但是如果你不能包含你的文件,那么就不会打印任何东西,相信我。如果您直接包含您的文件(没有此cookie行?),是否打印出一些内容。我模拟了这种情况,在我这方面效果很好。你的代码中(在这些行上面)没有告诉我们什么,这可能会导致这样的问题吗?嘿,“首先”这行是我的:]另一方面,你的更干净的解决方案确实值得+1。嘿,对不起,看起来我们的方向是一样的;)“还有一件事——如果base_url()返回web url(如),那么它也是错误的(也可能导致问题,因为langen.php以这种方式包含时,至少会包含通知消息)——应该包含在有效的文件路径中”——这解决了我的错误。当我更改include_url().'language/lang.$langCode..php';包括'language/lang.$langCode..php';很好!非常感谢卢帕图斯!嘿,那句“首先”是我的:]另一方面,你的清洁解决方案确实值得+1。嘿,对不起,看起来我们的方向是一样的;)“还有一件事——如果base_url()返回web url(如),那么它也是错误的(也可能导致问题,因为langen.php以这种方式包含时,至少会包含通知消息)——应该包含在有效的文件路径中”——这解决了我的错误。当我更改include_url().'language/lang.$langCode..php';包括'language/lang.$langCode..php';很好!非常感谢卢帕图斯!