2017-11-11 120 views
0

我有一個很大的陣列大約這樣50個值(例如我使用較小的陣列):減去許多陣列

Array 
(
    [Adam Małysz] => 1 
    [Justyna Kowalczyk] => 2 
    [Janne Ahonen] => 3 
    [Stefan Hula] => 4 
    [Ole Einar Bjoerdalen] => 5 
    [Jakub Janda] => 6 
    [Mariusz Pudzianowski] => 7 
    [Harry Potter] => 8 
    [Vladimir Zografski] => 9 
    [Pavel Karelin] => 10 
    [Eddie Edwards] => 11 
    [Apoloniusz Tajner] => 12 
) 

和我有Ñ較小具有不同值的常數數組:

Array 
(
    [Adam Małysz] => 1 
    [Janne Ahonen] => 2 
    [Stefan Hula] => 3 
    [Ole Einar Bjoerdalen] => 4 
    [Vladimir Zografski] => 5 
    [Pavel Karelin] => 6 
    [Apoloniusz Tajner] => 7 
    [Mariusz Pudzianowski] => 8 
    [Jakub Janda] => 9 
    [Harry Potter] => 10 
) 
Array 
(
    [Justyna Kowalczyk] => 1 
    [Apoloniusz Tajner] => 2 
    [Harry Potter] => 3 
    [Janne Ahonen] => 4 
    [Mariusz Pudzianowski] => 5 
    [Adam Małysz] => 6 
    [Jakub Janda] => 7 
    [Ole Einar Bjoerdalen] => 8 
    [Vladimir Zografski] => 9 
    [Pavel Karelin] => 10 
) 
Array 
(
    [Adam Małysz] => 1 
    [Janne Ahonen] => 2 
    [Jakub Janda] => 3 
    [Stefan Hula] => 4 
    [Ole Einar Bjoerdalen] => 5 
    [Justyna Kowalczyk] => 6 
    [Harry Potter] => 7 
    [Mariusz Pudzianowski] => 8 
    [Vladimir Zografski] => 9 
    [Apoloniusz Tajner] => 10 
) 

所以我想減去數組值是在哪裏是相同的密鑰,如:

Big Array: [哈利波特] => 8
[馬里斯斯·普祖亞諾斯基] => 7

小陣列#1:[哈利波特] => 10
[馬里斯斯·普祖亞諾斯基] => 8
小型陣列#2:[哈里波特] => 3
[馬里斯斯·普祖亞諾斯基] => 5

輸出:小型陣列#1和大陣列之間的差異爲鍵[哈利 波特] = 2
小陣列#1和大陣之間 差分鍵[Mariusz Pudzianowski] = 1

輸出:小型陣列#2 和Big陣鍵[哈利波特] =小陣列#2和大陣列之間5
差分對鍵之間2

基本上我差[馬里斯斯·普祖亞諾斯基] =卡住了。 請幫忙。

+0

這是不是很清楚你想達到什麼。請你能解釋一下你的例子。 –

回答

0

可以將您的大數組命名爲$ bigArray和small array作爲$ smallArray,它們都具有鍵值對。現在代碼應該是:

foreach($bigArray as $bigKey=>$bigValue){ 
    foreach($smallArray as $smallKey=>$smallValue){ 
     if($smallKey==$bigKey){ 
      $output=$bigValue-$smallValue; 
      echo 'Difference between Small Array #1 and Big Array for $bigKey is '.$output; 
     } 
    } 
} 

這樣你的大陣,你會循環小數組的每個元素,並檢查密鑰匹配,如果他們那麼你減去它們的值,並打印出來。你也可以爲其他小陣列做這個。

0

您可以使用array_intersect_key來查找所有陣列通用的所有密鑰。

$commonKeys = array_intersect_key($bigArray, $smallArray1, $smallArray2, ...) 

從那裏你只需要遍歷$ commonKeys並進行相應的替代。例如:

foreach ($commonKeys as $key) { 
    $result = abs($bigArray[$key] - $smallArray1[$key]); 
    echo " Difference between Small Array #1 and Big Array for key [$key] = $result"; 
    //you do that for each Small Array 
}