找到使用php出现一次的数组中的元素

时间:2017-09-25 06:42:03

标签: php arrays

我使用其他语言对这个问题有很多答案,但我想用php语言答案。请任何人帮助我 这是我的数组看起来像

$array = [1, 2, 3, 4, 4, 1, 2, 5, 5, 11, 11];

3 个答案:

答案 0 :(得分:4)

使用array_count_values(),如下所示: -

<?php

$array = [1, 2, 3, 4, 4, 1, 2, 5, 5, 11, 11];

$array_count_values = array_count_values($array);// get how many times a value appreas inside array

foreach($array_count_values as $key=>$val){ // now iterate over this newly created array
   if($val ==1){ // if count is 1
     echo $key. " in array come only one time.\n"; // this means value appears only one time inside array
   }
}

输出: - https://eval.in/867433https://eval.in/867434

如果您想要数组中的值: -

<?php

$array = [1, 2, 3, 4, 4, 1, 2, 5, 5, 11, 11,13]; // increased one value to show you the output

$array_count_values = array_count_values($array);

$single_time_comming_values_array = [];
foreach($array_count_values as $key=>$val){
   if($val ==1){
     $single_time_comming_values_array[] =  $key;
   }
}

print_r($single_time_comming_values_array);

输出: - https://eval.in/867515

答案 1 :(得分:1)

在这里,你可以使用这样的东西 -

<?php
function appearedOnce($arr)
{
  $result = 0;

       for($i=0; $i<sizeof($arr); $i++)
       {
          $result =  $result ^ $arr[$i];   

       }
    return $result;
}
$num = array(1, 2, 3, 4, 4, 1, 2, 5, 5, 11, 11);
print_r(appearedOnce($num)."\n")
?>

答案 2 :(得分:0)

我最初的回应是采取更加行人的方式,这可以从你example注意到。然后我偶然发现了一个相关的discussion

另一种方法是对数组进行排序,然后检查数字对是否有重复数据。下面的代码是将OP的数组与我将Michael Martin的C源代码翻译成PHP的耦合结果,如下所示:

<?php

$arr =  [1, 2, 3, 4, 4, 1, 2, 5, 5, 11, 11];

sort($arr);

for($i = 0, $max = count($arr); $i < $max; $i++){

    // is single number last element in array?
    if($i == count($arr)-1)
        $singleNum = $arr[$i];

    // If adjacent elements the same, skip  
    if($i < count($arr)-1 && $arr[$i] == $arr[$i+1]){
        $i++;
    }
    else
    {
        // found single number.
        $singleNum = $arr[$i];
     }
}
var_dump($singleNum);

请参阅live code