2013-03-27 25 views
0

我必須找到兩個數組之間的區別,並存儲在第三個數組中。如何修剪數組格式?

這是我在做什麼這個

$newEmails=array_diff($Emails_1, $Emails_2); 

現在的問題是$Emails_1是這種格式 - >

array(1) { [0] => string(20) "[email protected]" } 

$Emails_2談到這種格式 - >

array(1) { [0] => array(1) { 'email' => string(20) "[email protected]" } } 

我應該怎麼做$Emails_2,使其在相同的格式來作爲$Emails_1

PS:我不能亂動$Emails_1,可以比較之前只能改變$Emails_2

+0

所以你標記它爲C和PHP。我不明白。 – 75inchpianist 2013-03-27 17:30:48

+1

flatten $ Emails_2做差異化之前 – 2013-03-27 17:32:49

+0

@馬克貝克 - 這是我的問題,如何將它變平? – user2140616 2013-03-27 17:34:23

回答

0
$temp = array(); 
foreach($Emails_2 as $key => $value){ 
    $temp[$key] = $value['email']; 
} 
$Emails_2 = $temp; 
+0

很多...它的工作:) – user2140616 2013-03-27 17:56:12

0

你能做到這一點

$EmailTemp=$Emails_2[0]["email"]; 
$Emails_2=array(); 
$Emails_2[0]=$EmailTemp; 
+0

不起作用。未定義的變量:電子郵件 – user2140616 2013-03-27 17:43:45

+0

它不是$電子郵件,這是一個錯字。使用正確的代碼。其「電子郵件」 – 2013-03-27 17:45:38

0
$Emails_1 is in this format -> array(1) { [0] => string(20) "[email protected]" } 

$Emails_2 comes in this format -> array(1) { [0] => array(1) { 'email' => string(20) "[email protected]" } } 

選項1:爲什麼不只是從陣列第一剝離字符串,

$email1 = $Emails_1[0]; 

$email2 = $Emails_2[0]['email']; 

選項2:讓你的array_difference(..)迭代,

function array_difference($currentEmails, $comingEmails) 
{ 
    $newEmails = new Array(); 

    for ($comingEmails as $p) 
    { 
     if (!in_array($p['email'], $currentEmails)) 
     { 
      $newEmails[]=$p['email']; 
     } 
    } 

    return $newEmails; 
}