【问题标题】:Find the element in array that appears once using php [closed]使用php查找数组中出现一次的元素[关闭]
【发布时间】:2017-09-25 20:44:47
【问题描述】:

我用其他语言得到了很多关于这个问题的答案,但我想要一个 php 语言的答案。请任何人帮助我 这是我的数组的样子

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

【问题讨论】:

标签: php arrays


【解决方案1】:

使用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

【讨论】:

    【解决方案2】:

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

    <?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")
    ?>
    

    【讨论】:

    • 您有一个聪明的解决方案,而且速度也很快!我在3v4l.org/IRfV7#output 运行了您的代码。如果您要添加有关代码如何工作的简短说明,它将改善您的答案。
    【解决方案3】:

    我最初的反应是采取更平易近人的方法,正如您可能从 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

    【讨论】:

      猜你喜欢
      • 2014-11-16
      • 2020-10-09
      • 1970-01-01
      • 1970-01-01
      • 2011-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多