2016-09-19 3 views
-1

Ich habe zwei Array und ich muss zweite Array-Schlüssel mit ersten Array-Wert vergleichen miteinander zu finden.Wie zwei zu vergleichen und ersten und letzten Wert des ersten Array zu finden

Meine erste Array ist

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 
       ) 
     )  
) 

Meine zweite Array ist

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

Ich habe Schlüssel zweite Array finden C10359 in die erste Reihe. Wenn Spiel dann will ich dieses Array ersten und die letzten Wert

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

Mein versuchten Code

$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

Und was haben Sie versucht, um die gewünschte Funktionalität zu bekommen? – Epodax

+0

Sie möchten vergleichen und kennen Unterschied oder übereinstimmen? – Noman

+0

ist die Struktur der Arrays immer gleich? Jedes Array enthält zwei Arrays und sie haben alle eindeutige Schlüssel? – Federico

Antwort

1

Erste und zweite Arrays sind mehrdimensionale: (Array innerhalb Array).

Sie versuchen, sie glätten kann die Suche einfacher

$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

Ich habe mehrere C-ID, so kann ich nicht definieren, $ k –

0

Erster zu machen, müssen Sie dies mit array_intersect() vergleichen. Dann können Sie reset() und end() für die erste Suche verwenden und letzter Wert von Array ist hier das Beispiel:

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

Ausgang:

1 
9 
Verwandte Themen