2015-11-26 27 views
2

我有一個數組($name_new)由一個文本文件中創建:如何比較兩個數組的差異並輸出只出現在一個數組中的密鑰?

foreach ($properties as $key => $row) { 
    $name_new[] = $row['name'];  
} 

這裏是$name_new結果:

array(2) { 
    [0]=> 
    string(32) "john" 
    [1]=> 
    string(32) "frank" 
} 

而另一個數組,我從MySQL數據庫創建:

$sql = "SELECT * FROM data;     
$p = $pdo->prepare($sql); 
$p->execute(); 

foreach ($pdo->query($sql) as $row) { 
    $name_orig[] = $row['name']; 
} 

這裏是$name_orig結果:

我比較這兩個數組:

if ($name_new != $name_orig) { 
    $name_result = array_diff_assoc($name_orig, $name_new); 
    foreach($name_result as $r){ 
     echo "This name is not matching: ".$r; 
    } 
} 

所以我的結果這裏是:

這個名字不匹配:SAM

我的問題是,我也在我的結果中需要關鍵的名字。但是這個鍵只存在於文本文件中。

所以,如果我這樣寫:

foreach ($properties as $key => $row) { 
    $name_new[$key] = $row['name'];  
} 

這裏是$name_new[$key]結果...

array(2) { 
    ["123"]=> 
    string(32) "john" 
    ["456"]=> 
    string(32) "frank" 
}  

...我拿到鑰匙。但我怎麼能這個鍵連接到我的結果sam

結果我需要的是

該名稱不匹配SAM(註釋:456)

回答

1

比較兩個數組時,只需添加沿着你的foreach循環指數應該做的伎倆:

foreach($name_result as $k => $r){ 
    echo "This name is not matching: ".$r. "(Key:".$k.")"; 
} 
+0

對不起,我在我的代碼有一個錯誤,更新它,它都應該是'name'不'fileName' – Jarla

+0

定格在我的答案,這個想法雖然是相同的。鑰匙在那裏供您處理,您只需要索取。 – Calimero

+0

我測試了你的代碼。我的結果是:'這個名字是不匹配的:sam(Key:1)' – Jarla

3

請提高下面的代碼

if ($name_new != $name_orig) { 
    $name_result = array_diff_assoc($name_orig, $name_new); 
    foreach($name_result as $k=> $r){ 
     echo "This name is not matching: ".$r." and key:".$k; 
    } 
} 

希望這個作品

相關問題