2016-06-23 40 views
-2

我得到了两个php文件,其中包含$_DATA数组,我想比较两个数组的键值,并创建一个新的数组(和文件后)键和值)。从php文件中获取两个数组,比较它们并将差异导出到另一个数组

这些文件有相同和不同的密钥,因此我们的目标是要阅读所有的钥匙,对它们进行比较,然后才能将它们保存在一个新的PHP文件创建一个自定义键的新数组。

我试着用include,来读取文件,但我无法比较同名$_DATA的数组。

阵列1的样品

数组2

$_DATA['key1'] = "value1"; 
$_DATA['key2'] = "value2"; 
$_DATA['custom_key1'] = "value9"; 
$_DATA['custom_key2'] = "value10"; 
$_DATA['key3'] = "value3"; 
$_DATA['custom_key3'] = "value12"; 

$_DATA['key1'] = "value1"; $_DATA['key2'] = "value2"; $_DATA['key3'] = "value3"; $_DATA['key4'] = "value4"; $_DATA['key5'] = "value5"; $_DATA['key6'] = "value6"; 

样品预计阵列1

$_DATA['key1'] = "value1"; 
$_DATA['key2'] = "value2"; 
$_DATA['key3'] = "value3"; 
$_DATA['key4'] = "value4"; 
$_DATA['key5'] = "value5"; 
$_DATA['key6'] = "value6"; 

预计数组2

$_DATA['custom_key1'] = "value9"; 
$_DATA['custom_key2'] = "value10"; 
$_DATA['custom_key3'] = "value11"; 

有什么建议?

+0

您应该将数据阵列复制到一个新的变量,你有第二个文件之前。但是如果你使用这些阵列作为数据永久存储,你可能想看看像数据库,配置文件等 – jeroen

+0

装载函数调用内部数组(这样的范围限制)等解决方案和它们各自复制到数组的单个实例(例如,通过类实例属性,静态数组或全局变量)。 – syck

+1

那么这里的预期结果是什么,为什么? – deceze

回答

0

作为实物的伪代码的一个例子:

class load_and_compare { 
    $arrays = array(); 

    function load($filename) { 
     include($filename); 
     $arrays[] = $_DATA; 
    } 

    function compare() { 
     // return something like array_diff_keys($this->arrays[0], $this->arrays[1]); 
    } 
} 

$ll = new load_and_compare(); 
$ll->load('file_a.php'); 
$ll->load('file_b.php'); 
$output = $ll->compare(); 

至于比较功能支持的话,这可以用于任何数量的输入文件。

+0

谢谢你的回答。我遵循你的方法,经过一些编辑后,我在'function compare()'中得到'Undefined offset:0',当我试图传递'json_decode($ this-> arrays [0])'时。在'$ output = $ ll-> compare();'说'void method'compare'result used'。 –

+0

这个想法是,你用一些适合你需要的比较代码替换评论... – syck

+0

这就是我所做的。我试图测试是否与一个数组,以确定它的好,在设置功能正确之前。 –

相关问题