Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/255.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:解析静态文件和PHP数组文件的区别_Php_Arrays_Parsing_Translation - Fatal编程技术网

PHP:解析静态文件和PHP数组文件的区别

PHP:解析静态文件和PHP数组文件的区别,php,arrays,parsing,translation,Php,Arrays,Parsing,Translation,我想找到制作翻译框架的最佳方法(gettext有一些缺陷) 所以我做了两个测试——一个,解析文件包含下面代码的静态文本 function parseLine($line) { if($line[0] == '#' || !strlen($line)) return array(); $eq = strpos($line, '='); $key = trim(substr($line, 0, $eq)); $value = trim(subst

我想找到制作翻译框架的最佳方法(gettext有一些缺陷)

所以我做了两个测试——一个,解析文件包含下面代码的静态文本

function parseLine($line) {
    if($line[0] == '#' || !strlen($line)) 
        return array();

    $eq = strpos($line, '=');
    $key = trim(substr($line, 0, $eq));

    $value = trim(substr($line, $eq+1));
    $value = trim($value, '"');

    return array($key => $value);
}

$table = array();
$fp = fopen('lang.lng', 'r');
while(!feof($fp)) {
    $table += parseLine(fgets($fp, 4096));
}
fclose($fp);
其次包括数组

$table = include('lang.php');
当然,每个lang.lng和lang.php都有相同的数据(1000条记录),但以不同的方式重新呈现

当我看到结果时,我很惊讶。。。 第一种方法:~0.01秒 :~0.001秒

在测试之前,我确信包含数组比解析文件需要更多的内存和时间。
有人能告诉我哪里出了错吗?

我会认为这是一个很简单的问题。在包含数组的文件中读取,或者在文件中读取,逐行处理,对于每一行,查找不同的标记和组件,并将它们组合在一个复杂的问题中,以生成与include方法相同的数组,哪个更快?

“$table+=”,您不会像那样向PHP数组添加更多元素,这是没有错的。应该是这样的,手帕ㇱ 你错了@Vlad Balmos,但我认为解析php文件需要更多的时间。。每一行(每个字符)都必须进行测试,因为它可以包含特殊的内容。如果您使用不太奇怪的东西来提取文本(如单个正则表达式),那么比较就有意义了。无论如何,使用一个分析器;没有人能告诉你。@non它的veryyyyyy有趣的是,你应该说我说+=是一个不正确的运算符来向PHP数组添加新元素是错误的,更有趣的是,有人对该评论投了赞成票。这是我第一次看到它不起作用,仅供参考。数组的每一行都可以包含注释/函数/常量等。在我的方法中,只有注释和变量,php数组文件也必须逐行处理??是的,但php在一个低得多的级别系统中处理php文件,这比在更高级别中手动解析要快得多。