2010-12-08 3 views
1

salut j'écrire une fonction pour trouver dans le tableau, mais sa ne fonctionne pas lorsque la boucle trouver quelque chose la hauteur de ses pas réaccorder véritables contrôles de valeur à la fin une idéeproblème de retour de la boucle foreach

function findinArray($find,$array){ 
    foreach($find as $key => $value){ 
     if (in_array($find,$array)) { 
      return true; 
     }else{ 
      return false; 
    }  } 
} 
if(findinArray(array("a","b"),array("a")){ 
     echo "Match"; 
} 

grâce

+1

Qu'est-ce que la fonction devrait faire? Quelle est la condition * trouvée *? –

Répondre

7

Une fonction ne peut retourner une fois, de sorte que votre fonction retourne toujours sur la première itération. Si vous voulez que le résultat soit vrai lors du premier match, et false si aucune correspondance n'a été trouvée, essayez la version ci-dessous.

function findinArray($find, $array) { 
    foreach ($find as $value) { 
     if (in_array($value, $array)) { 
      return true; 
     } 
    } 
    return false; 
} 

if (findinArray(array("a","b"), array("a")) { 
    echo "Match"; 
} 

(Vous avez également fait des erreurs dans la façon dont vous utilisez les valeurs dans le foreach, et vous avez oublié un })

+0

c'est ce dont j'ai besoin merci oui il y avait erreur mais cela s'est accumulé en postant ici j'ai l'idée maintenant – r1400304

+1

Votre fonction n'utilise pas $ array du tout. – rik

+0

Oups ... vous avez raison. J'ai changé la mauvaise valeur. –

4

Il devrait être in_array($value, $array). Mais vous pouvez simplement faire count(array_intersect()).

0

vous passez le premier argument un tableau en in_array() il devrait être la valeur changer à

function findinArray($find,$array){ 
    foreach($find as $key => $value){ 
     if (in_array($value,$array)) { 
      return true; 
     } 
     return false; 
    }  
}