2015-08-29 1 views
1

J'ai un php en boucle (création d'un script de recherche), et je cherche à faire correspondre les valeurs pour voir quels éléments devraient aller dans les résultats de la recherche. strpos semble fonctionner très bien jusqu'à ce que tout d'un coup quand il refuse de fonctionner correctement sur ce point particulier ...Est-ce que j'utilise des strpos correctement? Je n'ai pas les résultats

if (strpos('a', 'a')) { 
continue; 
} 

ne devrait pas atteindre que continuer? "a" contient "a" après tout, mais dans mon script il atteint le continue.

+0

Pourriez-vous montrer le code environnant comme cela ne comme prévu, et ne marche pas courir le « continue » .. donc nous aurons besoin de voir les environs. – Darren

+0

Il renvoie [la position] (http://stackoverflow.com/a/4192039/3110638), qui est '0' =' false'. Utilisez simplement 'if (strpos ('a', 'a')! == false)' –

+0

résolvez-vous votre problème? Si la réponse vous aide à le considérer comme accepté, si vous ne savez pas comment lire ceci http://stackoverflow.com/tour –

Répondre

1

est ok Tout, essayez ce code:

<?php 

$value = strpos('qa', 'a'); 
var_dump($value); 

if($value) { 
echo "inside\n<br>"; 
} 

Sortie:

int (1)

intérieur

<?php 
$value = strpos('aq', 'a'); 
var_dump($value); 

if($value) { 
echo "inside\n<br>"; 
} 

Sortie:

int (0)

Dans le second code $value est d'évaluer comme false (boolean) dans le typecast, parce que la position de a est 0 et lorsque vous évaluez 0 dans la if() la valeur est coulée à false .

Vous devez utiliser ce code:

if(strpos('a', 'a') === 0) { 
echo "inside\n<br>"; 
} 

Sortie:

intérieur

Vous pouvez en savoir plus:

http://php.net/strpos

http://php.net/manual/en/language.operators.comparison.php