2017-06-21 86 views
0

我有以下陣列:比較,並與另一個陣列替換值

$files = ['376840000000367020', '376840000000375036', '376840000000389001']; 
$arr = []; 

foreach ($files as $key => $name) { 
    $arr[] = $name; 
} 

$data = [ 
    '376840000000367020' => '5782', 
    '376840000000375036' => '5783', 
    '376840000000389001' => '5784', 
]; 

print_r($arr); 

這將返回:

Array ([0] => 376840000000367020 [1] => 376840000000375036....) 

我想比較2個陣列$arr$data如果$key$arr找到替代價值與$data,我想得到以下輸出:

Array ([0] => 5782 [1] => 5783 ....) 

我有很多數據進行比較,所以它不是理想的迭代$arr裏面的foreach。

我該如何去做這件事?

+0

疊代在$ ARR的所有條目,檢查當前的條目存在內$的數據,如果是更換,否則繼續 –

+0

你期望的結果是什麼? –

+0

$ arr應該在$ data中搜索是否存在匹配$ arr應該用$ data替換value 572,5783等 – sam

回答

1

可以使用array_key_exists功能來檢查關鍵存在於數組:

<?php 

$files = ['376840000000367020','376840000000375036','376840000000389001']; 

$data = array(
    '376840000000367020' => '5782', 
    '376840000000375036' => '5783', 
    '376840000000389001' => '5784', 
); 

$arr = []; 
foreach($files as $key=>$name){ 
    if(array_key_exists($name, $data)) { 
     $arr[] = $data[$name]; 
    } 
} 


print_r($arr); 
0

迭代$files陣列並檢查是否值是$data

foreach ($files as &$file) { 
    if (isset($data[$file])) { 
     $file = $data[$file]; 
    } 
} 
+0

感謝您的幫助,但它不會給我任何輸出,只是空白屏幕 – sam

+0

你會做'的var_dump($文件);'? – Justinas

0

使用array_map通過當值的第二個數組中存在,並返回它的值,在這種情況下,或該項目以其他方式來檢查回調。

+0

你能告訴我該怎麼做嗎?謝謝 – sam

+0

嘗試文檔中給出的示例。如果你沒有理解它,解釋你的疑惑,我會很樂意提供幫助 – Koop4