2017-05-04 1 views
0

Ich habe 2 Arrays, die ich kombinieren möchte, aber die Werte in beiden Arrays sind die gleichen, aber ich möchte sie noch kombinieren. Ist das möglich?PHP - Kombinieren Sie 2 Arrays, wo der Schlüssel mehrmals gleich ist

Lets sagen, dass ich die folgenden Felder haben:

Array ([0] => 2683 [1] => 2683 [2] => 2683 [3] => 2683 [4] => 2683 [5] => 2683) 

Array ([0] => 2097152 [1] => 4194304 [2] => 6291456 [3] => 8391910 [4] => 234889216 [5] => 234889280) 

ich array_combine verwendet, aber nur dann, es zeigt ein Wert. In diesem Fall möchte ich, dass der Schlüssel Duplikate zulässt, oder zumindest irgendwie in einem Array zusammenbringen, wo ich sie einfach durchlaufen kann.

Ist dies mit Arrays möglich? Oder hat jemand anderes eine bessere Lösung? Ich muss sie später durchlaufen und habe die passenden Werte, das ist der Punkt. Unter meinem Code, wenn das hilft.

try { 
     $stmt = $pdo->prepare("SELECT deviceid, interfaceoid FROM poorten WHERE deviceid = '2683'"); 
     $stmt->execute(); 

     $deviceid = array(); 
     $interfaceoid = array(); 

     if($stmt->rowCount() > 0) { 
     while($row = $stmt->fetch()) { 
      //echo "" . $row['deviceid'] . " : "; 
      //echo "" . $row['interfaceoid'] . "</br>"; 

      $deviceid[]  = $row['deviceid']; 
      $interfaceoid[] = $row['interfaceoid']; 
     } 

     $result = array_combine($deviceid, $interfaceoid); 
     var_dump($result); 
     } 
    } 
    catch(PDOException $e) { 
     echo "Something went wrong: " . $e->getMessage() . ""; 
    } 
+0

Ich glaube, Sie array_push verwenden sollten. – Zooly

+0

@ Zooly, das ist nicht was ich will. Das wird sie nur zusammenbringen, was ich nicht will. Es gibt einen Unterschied zwischen Array 1 und Array 2. – vaxzz

+0

Was ist Ihre erwartete Ausgabe? –

Antwort

2

Verwenden deviceid als Array Schlüssel:

$result = []; 
if ($stmt->rowCount() > 0) { 
    while ($row = $stmt->fetch()) { 

     if (!isset($result[$row['deviceid']])) { 
      $result[$row['deviceid']] = []; 
     } 

     $result[$row['deviceid']][] = $row['interfaceoid']; 
    } 
} 

var_dump($result); 
+0

Vielen Dank. Das ist, was ich suchte, ich bin noch ziemlich neu in der Entwicklung und wusste nicht, wie es geht. Ich habe noch 1 Frage, wenn es Ihnen nichts ausmacht, wie kann ich foreach Schleife durch diese? Vielleicht scheint das eine dumme Frage zu sein, aber Ihr Code ist im Moment etwas schwierig für mich zu verstehen. – vaxzz

0

die Sie interessieren, für live demo und live demo

foreach($values as $k => $v) 
{ 
    $result[$keys[$k]][] = $v; 
} 
$result = array_map(function($v){return count($v) > 1 ? $v : $v[0];}, $result); 
Verwandte Themen