2012-11-14 1 views
0

J'essaie de comparer une chaîne avec un tableau pour voir si la chaîne est présente dans le tableau et si c'est le cas echo 'in array'. Je continue seulement à pouvoir faire fonctionner l'écho comme je le veux avec la toute dernière entrée dans le tableau.vérifier si une valeur est présente dans un tableau

foreach($array as $key => $value) { 
    foreach($entries as $entry) { 
     if($entry == $value) echo 'in array 1'; 
    } 
    if (in_array($value, $entries)) { 
     echo 'in array 2'; 
    } 
    if(isset($entries[$value])) { 
     echo 'in array 3'; 
    } 
} 

l'écho pour « dans le tableau 1 » et « dans le tableau 2 » travail que sur ce que l'entrée dernière dans le tableau des entrées $ est, et l'écho pour le travail ne marche pas « dans le tableau 3 » du tout.

C'est probablement quelque chose de stupide, mais je ne suis pas le voir ...

modifier:

Voici quelques exemples des tableaux

$entries = 
array(5) { 
    [0]=> 
    string(14) "example text 1" 
    [1]=> 
    string(14) "example text 2" 
    [2]=> 
    string(14) "example text 3" 
    [3]=> 
    string(14) "example text 4" 
    [4]=> 
    string(14) "example text 5" 
} 

$array = 
array(5) { 
    [0]=> 
    string(14) "example text 1" 
    [1]=> 
    string(14) "example text 2" 
    [2]=> 
    string(14) "example text 3" 
    [3]=> 
    string(14) "example text 7" 
    [4]=> 
    string(14) "example text 8" 
} 

maintenant quand je fais

foreach($array as $key => $value) 

$ valeur doit avoir les valeurs de ma $ array et j'ai besoin de comparer chacune de ces valeurs Valeurs e pour voir si elles sont présentes dans mon tableau $ entries. Si oui jaimerais echo « dans le tableau »

modifier 2:

si cela fait une différence mon tableau des entrées de $ est créé par fichier() car l'information provient d'un journal. Chaque fois qu'un nouveau fichier est ajouté, il est enregistré, puis je veux comparer les fichiers entrants au journal, déterminer s'ils ont déjà été ajoutés et, si ce n'est pas le cas, les ajouter.

+0

Je suis confus, vous dites que vous comparez une chaîne avec un tableau, mais il semble que vous comparez un tableau avec un tableau .. pouvez-vous fournir des exemples de données dans tous ces tableaux/chaînes et ce que vous obtenez et ce que vous attendez? – gingerCodeNinja

+0

bien $ value est une chaîne stockée dans un tableau, im passant par $ array pour obtenir chaque valeur $, puis comparant $ value à chaque valeur dans $ entries ($ entry) – cwal

+0

donc chaque caractère de votre chaîne est dans $ value? comme 'cat' est 'array ('c', 'a', 't');'? ou voulez-vous dire que chaque mot d'une chaîne est en $ value? comme 'chat assis sur le tapis' est 'array ('cat', 'sat', 'on', 'the', 'mat');'? et ce qui est en $ entrées? – gingerCodeNinja

Répondre

1

$value n'est pas une clé.

La valeur est une "valeur".

si vous vraiment voulu faire ce que vous faites, vous pouvez faire:

if(isset(array_flip($entries)[$value])) { 
    echo 'in array 3'; 
} 

Mais il pourrait ne pas fonctionner si vous avez plusieurs éléments avec la même valeur.

See DOCs

+0

tous seront uniques – cwal

+1

alors comment se fait-il que mes 2 premières variantes ne fonctionnent que sur la dernière entrée? – cwal

2

Votre code semble vérifier tout ce qui est en commun dans deux tableaux, et il le fait de trois façons différentes. La raison pour laquelle on va travailler sur un autre dépend des données. Les comparateurs ==, in_array et isset fonctionnent différemment. Vraiment besoin de voir votre structure de tableau/échantillon de données pour commenter davantage.

Cependant, ce que vous êtes en train de faire, trouver des éléments communs de deux tableaux, peut facilement être fait avec array_diff() ou array_intersect()

Votre première ligne -

Je suis en train de comparer une chaîne avec un tableau pour voir si la chaîne est présente dans le tableau et si c'est le cas echo 'in array'.

peut juste être atteint avec un seul appel à in_array, comme in_array('cat', array('cat', 'dog', 'mouse'));

+0

les 3 façons différentes étaient pour les tests et je ne pouvais pas obtenir aucune de mes façons de travailler. – cwal

+0

a ajouté des tableaux d'exemple – cwal

Questions connexes