2014-07-21 3 views
2

J'essaie de prendre deux listes (tableaux) de nombres, et d'utiliser des boucles Foreach en PHP pour créer un troisième tableau contenant tous les nombres communs. J'ai l'impression d'avoir atteint un barrage routier pour comprendre la logique, quelqu'un peut-il donner un sens à ce que j'ai et ce qui ne va pas?en utilisant des boucles Foreach incorporées pour référencer des tableaux en PHP

<?php 
$cardOutcome = array(); 

$explodeCalled = explode(",", $card_detail['calledNumbers']); 
$explodeCard = explode(",", $card_detail['cardNumbers']); 

foreach($explodeCard as $card) 
{ 
    foreach($explodeCalled as $called) 
    { 
     if($called == $card) 
     { 
      $cardOutcome[] = $called; 
     } 
    } 
} 

print_r($cardOutcome); 
?> 

Les valeurs du tableau et les résultats des print_r sont inférieurs

$explodeCard = 2, 5, 1, 11, 4, 25, 19, 28, 21, 18, 32, 37, 38, 41, 40, 50, 55, 49, 56, 57, 75, 73, 61, 72, 74 

$explodeCalled = 3, 70, 39, 6, 45, 43, 9, 48, 54, 51, 49, 33, 21, 1, 65, 71, 75, 15, 50, 36, 55, 14, 13, 7, 4, 67, 74, 26, 8, 32, 22, 28, 62, 57, 56, 38, 12, 2, 59, 40, 27, 69, 18, 20, 42, 44, 37, 46, 72, 60, 11, 58, 66, 29, 30, 35, 52, 25, 47, 10, 61, 5, 23, 73, 53, 34, 41, 

$cardOutcome = Array ([0] => 2 [1] => 5 [2] => 1 [3] => 11 [4] => 4 [5] => 25 [6] => 28 [7] => 21 [8] => 18 [9] => 32 [10] => 37 [11] => 38 [12] => 41 [13] => 40 [14] => 50 [15] => 55 [16] => 49 [17] => 56 [18] => 57 [19] => 75 [20] => 73 [21] => 61 [22] => 72 [23] => 74) 

Le tableau de résultats de $ semble être simple, l'impression des valeurs « carte ». J'ai l'impression d'avoir fait une erreur logique flagrante. Et des idées ??

Répondre

3

Essayez array_intersect (http://php.net/manual/en/function.array-intersect.php)

$explodeCalled = explode(",", $card_detail['calledNumbers']); 
$explodeCard = explode(",", $card_detail['cardNumbers']); 
$cardOutcome = array_intersect($explodeCalled,$explodeCard); 
+0

Excellent, exactement ce que je avais besoin, merci! – user3520983

Questions connexes