Php数组返回null?

时间:2016-08-31 15:19:26

标签: javascript php jquery html arrays

我有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>

如上所述,它只显示一个空数组... 我做错了什么?有办法解决吗?

2 个答案:

答案 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!

<强>结果

enter image description here

运行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居住的目录中。

建议

使用绝对文件路径而不是相对路径。