in_array () не работает - PullRequest
       24

in_array () не работает

5 голосов
/ 14 ноября 2009

Мой код:

<?php

$pass = "12345";

//checkPass($pass, $user, $length);
$file = file_get_contents("common.txt");
$array = explode("\n", $file);
if(in_array($pass, $array) == true) {
 echo "it's in the array";
}
?>

первые несколько строк массива (я использовал print_r ($ array) ...):

Array ( [0] => 12345 [1] => abc123 [2] => password [3] => computer [4] => 123456 
[5] => tigger [6] => 1234 [7] => a1b2c3 [8] => qwerty [9] => 123 [10] => xxx 
[11] => money [12] => test [13] => carmen [14] => mickey [15] => secret 
[16] => summer [17] => internet [18] => service [19] => canada [20] => hello 
[21] => ranger [22] => shadow [23] => baseball [24] => donald [25] => harley 
[26] => hockey [27] => letmein [28] => maggie [29] => mike [30] => mustang 
[31] => snoopy

Ответы [ 4 ]

24 голосов
/ 14 ноября 2009

Если ваш файл использует разрывы строк Windows (строки заканчиваются на \r\n), вы получите невидимый символ \r в конце каждой из ваших строк. Проверьте это, запустив strlen () на одном из них:

echo $array[0] . ': ' . strlen($array[0]) . ' chars';

Если вы получите что-то вроде

12345: 6 chars

Вы знаете, что это проблема! Вы можете избавиться от этих символов после взрыва массива, используя array_map() с trim():

$array = array_map('trim', $array);
2 голосов
/ 14 ноября 2009

Вот что я придумал, чтобы сработало:

<?php

$file = file_get_contents("common.txt"); 

$array = explode("\n", $file); 

$pass = "snoopy";

if(in_array($pass, $array) == true) {     
    echo "it's in the array";     
}else {    
    echo "it's not";    
}

?>
2 голосов
/ 14 ноября 2009

Вы также можете использовать trim для этого. Это могут быть невидимые символы, которые вы не видите на глаз.

1 голос
/ 14 ноября 2009

это $ pass значение 0 - 31?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...