我有php文件,它读取文件并将其内容放在特定的数组中。这个php文件是一个独立的文件。所以我把它包含在另一页上。当我想访问另一个站点上的一个阵列时,输出是“array(0){}”。但是,下面文件中的var_dump会返回一个包含所有6个项目的完整数组(如预期的那样)。
这是我的php文件:
<?php
$englishTranslationsList = array();
$germanTranslationsList = array();
$timestampList = array();
$noteList = array();
function extractTranslationsFromFile($file){
$handle = fopen($file, "r");
if ($handle){
while (($line = fgets($handle)) !== false) {
$notelist[] = $line;
$lineContent = substr($line, 3, strlen($line) - 1);
switch(substr($line, 0, 3)):
case "de:": $germanTranslationsList[] = $lineContent; break;
case "en:": $englishTranslationsList[] = $lineContent; break;
case "ts:": $timestampList[] = $lineContent; break;
default: break;
endswitch;
}
fclose($handle);
}else{
echo "<script>alert('ERROR')</script>";
}
echo var_dump($germanTranslationsList);
}
?>
在我收录的网站上,我使用了
<p><?php echo var_dump($germanTranslationsList); ?></p>
如上所述,它只显示一个空数组... 我做错了什么?有办法解决吗?
答案 0 :(得分:0)
您需要使用global
关键字将全局变量纳入函数范围:
<?php
$englishTranslationsList = array();
$germanTranslationsList = array();
$timestampList = array();
$noteList = array();
function extractTranslationsFromFile($file) {
global $englishTranslationsList;
global $germanTranslationsList;
global $timestampList;
global $noteList;
// ...
}
答案 1 :(得分:0)
当您在A.php中包含B.php时,您应该注意在B.php中定义的文件路径。
所以,我猜你定义了一些相对文件路径。
<强> Directory_stucture 强>
.
├── A.php
└── dir
├── a.txt
└── B.php
<强> a.php只会强>
require_once('dir/B.php');
<强> B.php 强>
$handle = fopen("a.txt", "r") or die("Unable to open file!");
echo fread($handle,filesize("a.txt"));
fclose($handle);
<强> A.TXT 强>
Hello, world!
<强>结果强>
运行B.php工作正常,打印&#39;你好,世界!&#39;
但如果您运行A.php,则会打印“无法打开文件!”#39;
运行B.php时,fopen()
搜索&#39; a.txt&#39;在B.php居住的目录中
但是当运行A.php时,fopen()
搜索&#39; a.txt&#39;在A.php居住的目录中。
使用绝对文件路径而不是相对路径。