2010-09-04 6 views
1

C'est un autre jour pour être épais — donc désolé. :) De toute façon, j'ai 2 tableaux que je veux manipuler; Si une valeur du premier tableau existe dans le second tableau, faites une chose et ensuite faites quelque chose d'autre avec les valeurs restantes du second tableau.tableaux php - in_array et/ou array_intersect

par exemple.

$array1 = array('1','2','3','4'); - the needle 
$array2 = array('1','3','5','7'); - the haystack 

if(in_array($array1,$array2): echo 'the needle'; else: echo'the haystack LESS the needle '; endif; 

Mais pour une raison quelconque le in_array ne fonctionne pas pour moi. Aidez-moi, s'il vous plaît.

+0

Voulez-vous dire que « toute valeur » ou « toutes les valeurs » de l'aiguille doit être présent dans la botte de foin? – Matthew

Répondre

3

le faire comme ceci:

<?php 
$array1 = array('1','2','3','4'); 
$array2 = array('1','3','5','7'); 

//case 1: 
print_r(array_intersect($array1, $array2)); 

//case 2: 
print_r(array_diff($array2, $array1)); 
?> 

Cette sortie les valeurs de tableau (ce que vous vouliez plus tôt avant la question a été changé):

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

Et, si vous voulez utilisez if-else, faites comme ceci:

<?php 
$array1 = array('1','2','3','4'); 
$array2 = array('1','3','5','7'); 

$intesect = array_intersect($array1, $array2); 

if(count($intesect)) 
{ 
    echo 'the needle'; 
    print_r($intesect); 
} 
else 
{ 
    echo'the haystack LESS the needle '; 
    print_r(array_diff($array2, $array1)); 
} 
?> 

Ce sorties:

the needle 
Array 
(
    [0] => 1 
    [2] => 3 
) 
+0

Merci shamittomar - dit pensait, je ne pouvais pas obtenir le premier tableau dans array_diff comme je l'avais précédemment manipulé en quelque sorte (oublié maintenant) que votre code fonctionne un rêve – user351657

+0

Si cela est littéralement ce que vous voulez, puis 'array_diff' est complètement superflu puisque vous avez déjà déterminé que l'intersection est nulle. – Matthew

+0

@konforce, oui je suis d'accord mais dans la question originale (qui est maintenant révisée) il a été demandé de montrer les valeurs restantes. – shamittomar