2016-09-19 75 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 
相关问题