【问题标题】:in_array() not workingin_array() 不工作
【发布时间】:2009-11-14 09:41:49
【问题描述】:

我的代码:

<?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)...):

数组 ( [0] => 12345 [1] => abc123 [2] => 密码 [3] => 计算机 [4] => 123456 [5] => 跳跳虎 [6] => 1234 [7] => a1b2c3 [8] => qwerty [9] => 123 [10] => xxx [11] => 钱 [12] => 测试 [13] => 卡门 [14] => 米奇 [15] => 秘密 [16] => 夏季 [17] => 互联网 [18] => 服务 [19] => 加拿大 [20] => 你好 [21] => 游侠 [22] => 影子 [23] => 棒球 [24] => 唐纳德 [25] => 哈雷 [26] => 曲棍球 [27] => letmein [28] => 玛姬 [29] => 迈克 [30] => 野马 [31] => 史努比

【问题讨论】:

  • 你能把你设置的 $pass 设置为当时的值吗?
  • 它在文件的顶部,就在 PHP 开始标签之后。我试着在上面编辑它,但有些东西不正常。

标签: php html


【解决方案1】:

如果您的文件使用 Windows 换行符(行以 \r\n 结尾),您将在每个字符串的末尾看到一个不可见的 \r 字符。通过在其中一个上运行 strlen() 来测试它:

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

如果你得到类似的东西

12345: 6 chars

你知道这就是问题所在!使用array_map()trim() 分解数组后,您可以删除这些字符:

$array = array_map('trim', $array);

【讨论】:

    【解决方案2】:

    这是我想出的有效方法:

    <?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";    
    }
    
    ?>
    

    【讨论】:

      【解决方案3】:

      您可能也想在上面使用trim。可能是你肉眼看不到的隐形字符。

      【讨论】:

        【解决方案4】:

        $pass 的值是 0 - 31 吗?

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多