2013-03-30 157 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