2016-09-19 55 views
-1

我有兩個數組,我必須找到與第一個數組值相互比較的第二個數組鍵。如何比較兩個,並找到第一個數組的第一個和最後一個值

我的第一個數組是

Array 
(
    [0] => Array 
     (
      [C10359] => Array 
       (
        [0] => 89785 
        [1] => 89786 
        [2] => 89857 
       ) 
      [C10899] => Array 
       (
        [0] => 52924 
        [1] => 52945 
        [2] => 52975 
       ) 
     ) 
    [1] => Array 
     (
      [C10370] => Array 
       (
        [0] => 89785 
        [1] => 89786 
        [2] => 89857 
       ) 
      [C10988] => Array 
       (
        [0] => 52924 
        [1] => 52945 
        [2] => 52975 
       ) 
     )  
) 

我的第二個陣列是

Array 
(
    [0] => Array 
     (
      [C10359] => 89860.5 
      [C10899] => 53079 
     ) 
    [1] => Array 
     (
      [C10988] => 89860.5 
      [C10111] => 53079 
     ) 
) 

我必須找到第二個數組鍵C10359爲第一陣列。如果匹配,則我想要這個陣列的第一和最後一個值

[C10359] => Array 
       (
        [0] => 89785 
        [1] => 89786 
        [2] => 89857 
       ) 

我試圖代碼

$vals = array(); 
    foreach ($first_array as $k => $v) { 
     foreach($v as $key=>$val) { 
      if (in_array($val, $second_array)) { 
       $value = abs((($val - $second_array)/$second_array)*100); 
        if($value < 25){ 
         return $vals ; 
        } 
      } 
     } 
    } 
+0

還有,你才能嘗試,以獲得所需的功能? – Epodax

+0

你想比較,並知道差異或匹配? – Noman

+0

數組的結構總是一樣的嗎?每個數組包含兩個數組,並且它們具有所有唯一鍵? – Federico

回答

1

第一和第二陣列是多維:(數組內數組)。

您可以嘗試展平,然後讓搜索更容易

$first_array_flat = array(); 
foreach($first_array as $a){ 
    $first_array_flat += $a; 
} 

$second_array_flat = array(); 
foreach($second_array as $a){ 
    $second_array_flat += $a; 
} 


foreach($second_array_flat as $k=>$v){ 
    if(isset($first_array_flat[$k])){ 
     $a = $first_array_flat[$k]; 
     $first_v = reset($a); 
     $last_v = end($a); 

     #..... do your stuff here ... 
    } 
} 
+0

我有多個C ID,所以我無法定義$ k –

0

首先,你有array_intersect()來進行比較。然後你可以使用reset()end()尋找第一和陣列這裏的最後一個值是例如:

<?php 
$arr = array(1,5,6,8,9); 
$first_array = reset($arr); 
$last_array = end($arr); 
?> 

輸出:

1 
9 
相關問題