440101199912010001
440101199912010001
440101199912010002
440101199912010003
这样的身份证放进数组中,
$idcode=XX;//代表上面的4个身份证,
$arr=array();
if(!in_array($idcode,$arr)){
$arr[]=$idcode;
}
结果得到的只有第一个身份证。
难道PHP对比时会截断长度?
要如何解决这个问题。
需要的结果是:
最后的$arr=array("440101199912010001","440101199912010002","440101199912010003");

解决方案 »

  1.   

    $ar = array(
    '440101199912010001',
    '440101199912010001',
    '440101199912010002',
    '440101199912010003',
    );$arr = array(); 
    foreach($ar as $idcode) {
      if(!in_array("_$idcode", $arr)){ 
        $arr[] = "_$idcode";
      }
    }$arr = array_map(create_function('$v', 'return substr($v, 1);'), $arr);
    print_r($arr);
    Array
    (
        [0] => 440101199912010001
        [1] => 440101199912010002
        [2] => 440101199912010003
    )由于php会自动变换数据类型,只能变通处理了
      

  2.   


    $arr = array();
    $id_array = array('440101199912010001','440101199912010001','440101199912010002','440101199912010003');
    $arr = array_unique($id_array); 
    以上代碼為去除數組中的重複值,應該就是你想要的功能.這個更簡單//=================================================
    還有你的代碼的問題是沒有對數據進行循環取值.當然只能夠拿到一個結果啦
      

  3.   

    就是不要重复的身份证放在一个数组里面。所有代码贴出来,看了会更糊途。
    表:tb_idcode  里面有字段id,code , 
    有四条记录:
    id     code
    1      440101199912010001
    2      440101199912010001
    3      440101199912010002
    4      440101199912010003
    目的就是想从这个表中读出这四条记录,然后放在一个数组中,不重复放,
    数组的结果也就是只有这三个数:
    440101199912010001
    440101199912010002
    440101199912010003我现在用的就是PHP的函数in_array();结果只有一个数放在数组里面。
    请问为什么?要如何解决?
      

  4.   

    整个都有错误!首先,in_array相当于
    for(i=0;i<arraylen;i++)
    {
    array[i]==e;
    }
    因此!in_array($idcode,$arr)会始终成立
    其次copy数组请用循环实现,你这样是把$idcode的第一个元素放入array中
      

  5.   

    先确定数组里面的类型,如果类型一样的话,用in_array()应该是可以的
      

  6.   

    是有循环取值的。一个for循环。问题应该是出在in_array()里面。
    后来我用:             
     for($n=0;$n <= count($arr_senduser);$n++){
         if(strval($arr_senduser[$n]) === strval($tmpv)){//这种方法做比对,结果才正确了。
            $kkk=1;
         }
      }
          if($kkk==0){
            $arr_senduser[]=$tmpv;
            }
    所以比较迷惑。
      

  7.   

    忘了说$tmpv就是$idcode来的。
    程序还有其他地方用到in_array();
    不可能去做循环,因为效率会很低。
    请大家帮忙看一下。
    谢谢xuzuning:我先试一下。
      

  8.   

    问一下xuzuning:$arr[] = "_$idcode";  加一下划线存进去的意思,是告诉PHP这是一个字符,这样比对才不会错对吧。 
      

  9.   


    <?php
    $ar = array(
    '440101199912010001',
    '440101199912010001',
    '440101199912010002',
    '440101199912010003',
    );$arr = array(); 
    foreach($ar as $idcode) {
      if(!in_array($idcode, $arr, true)){ 
        $arr[] = $idcode;
      }
    }
    var_dump($arr);
    ?>
      

  10.   

    搜索数据库的时候就去除重复不就可以了吗?!select DISTINCT code from tb_idcode;