2013-03-30 103 views
0

我有兩個是文件列表,而另一個已唯一id()=>( 「文件」,UID,會議)同步陣列之間的兩個

陣列1:

$madeFromFilesArray = array(
    "index", 
    "contact", 
    "reportA", 
    "reportB", 
); 

陣列2:

$LoadedArray = array(
    5156e1b122c2b => array("index", uid, meetings), 
    5156e1b122c2c => array("about", uid, meetings), 
    5156e1b122c2d => array("contact", uid, meetings), 
    5156e1b122c2e => array("reportB", uid, meetings), 
); 

陣列1是更新之一。 我需要同步陣列2與1例如從陣列2刪除「約」,因爲它不是在1並添加到reportA陣列2,因爲它是在1,而不是在2 所以最終的陣列是:

結果ARRAY3:

$LoadedArray = array(
    5156e1b122c2b => array("index", uid, meetings), 
    5156e1b122c2d => array("contact", uid, meetings), 
    5156e1b122c2e => array("reportB", uid, meetings), 
    5156e1b122c2f => array("reportA", uid, meetings), 
); 
+0

您是否嘗試過的東西?有什麼特別的*你不清楚? – deceze

+0

請在php中發佈代碼,因爲它是,我看到多個答案取決於你的結構 –

+0

我知道它是僞代碼,但數組2不可能看起來像這樣。看看結果http://3v4l.org/dVuiZ看到的問題?由於密鑰被覆蓋,只剩下一個值。 var_dump或print_r您的實際數組,並向我們展示它的外觀,但迄今爲止您提供的內容無法提供幫助。 – Crisp

回答

2

這裏有一個解決方案,但我不知道是從哪裏來的,或者它們代表什麼uidmeetings,所以我使用的字符串

$madeFromFilesArray = array(
    "index", 
    "contact", 
    "reportA", 
    "reportB", 
); 

$LoadedArray = array(
    '5156e1b122c2b' => array("index", 'uid', 'meetings'), 
    '5156e1b122c2c' => array("about", 'uid', 'meetings'), 
    '5156e1b122c2d' => array("contact", 'uid', 'meetings'), 
    '5156e1b122c2e' => array("reportB", 'uid', 'meetings'), 
); 

$seenFiles = array(); 
foreach ($LoadedArray as $key => $values) { 
    if (!in_array($values[0], $madeFromFilesArray)) { 
     unset($LoadedArray[$key]); 
    } else { 
     $seenFiles[] = $values[0]; 
    } 
} 

$missingFiles = array_diff($madeFromFilesArray, $seenFiles); 
foreach ($missingFiles as $value) { 
    $LoadedArray[uniqid()] = array($value, 'uid', 'meetings'); 
} 
+0

非常感謝你:),我只是希望如果theres 1000文件它不會永遠同步...標記爲answare。 – Mike