In_array函数在php中不起作用

时间:2014-11-24 09:20:16

标签: php

我有2个数组,第一个是$brand2,它有重复的值Selafone。我想将数组$brand2插入$finalarray而没有重复值,值只出现一次。但我得到了重复价值的$ finalarray ..有人提出任何建议吗?我的代码如下。

$finalarray=array(); 
$brand='Selafone -Selafone2-Selafone';
$brand2=explode('-', $brand);

for ($i=0; $i<count($brand2); $i++)
{
    if (in_array($brand2[$i], $finalarray))  
    {
        echo "kkkkkk";
    }
    else
    {
        array_push($finalarray, $brand2[$i]);
    }
}

print_r($finalarray);

打印输出$ finalarray是

Array ( [0] => Selafone [1] => Selafone2 [2] => Selafone )

4 个答案:

答案 0 :(得分:0)

看起来它对我来说非常好。在输出上更好看(使用var_dump()),你会注意到看起来像相同值的一些差异。其中一个Selafone在结果中包含空格。

答案 1 :(得分:0)

使用

array_push($finalarray, trim($brand2[$i]));

而不是

array_push($finalarray, $brand2[$i]);

答案 2 :(得分:0)

试试这个自定义代码......

    $finalarray=array(); 
    $brand='Selafone -Selafone2-Selafone';
    $brand2=explode('-',$brand);
    $num = count($brand2);
    $new = array();
    for($i=0; $i<$num ; $i++){
        $data = $brand2[$i]."<br/>";
        foreach($brand2 as $value){
            if($value !== $brand2[$i]){
                $new = $value; 
            }
        }
    }
    print_r($new);

&GT?; 试一试

答案 3 :(得分:-2)

试试这个,这是因为空白,所以使用trim($brand2[$i])。删除空格。

当前解决方案:

<?php
      $finalarray=array(); 
     $brand='Selafone -Selafone2-Selafone';
     $brand2=explode('-',$brand);

      for($i=0;$i<count($brand2);$i++)
       {

         if(in_array(trim($brand2[$i]),$finalarray))  
          {
          echo "kkkkkk";

          }
         else
         {
          array_push($finalarray,trim($brand2[$i]));

         }
       }
   print_r($finalarray);

  ?>

输出:

kkkkkkArray([0] =&gt; Selafone [1] =&gt; Selafone2)

优化解决方案:

  $brand = 'Selafone -Selafone2-Selafone';
  $brand2 = explode('-',$brand);
  $finalarray = array_unique(array_map('trim', $brand2));
  print_r($finalarray);