2016-06-23 53 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

這就是我所做的。我試圖測試是否與一個數組,以確定它的好,在設置功能正確之前。 –

相關問題