2017-09-25 146 views
-1

我已經有很多關於使用其他語言的這個問題的答案,但我想用PHP語言的答案。任何一個可以幫助我,請 這是我的數組看起來像找到使用php出現一次的數組中的元素

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

的可能重複:https://開頭計算器.com/questions/11340450/select-only-unique-array-values-from-this-array –

+0

不是太寬泛,是一個合法的編程問題。以下是一篇認真考慮它的文章:http://www.codinghelmet.com/?path=exercises/number-appearing-once-in-array。另外,我在SO上發現了一個相關的討論:https://stackoverflow.com/questions/2644179/find-the-only-unpaired-element-in-the-array – slevy1

回答

3

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

在這裏,你可以使用像這 -

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

你有一個聰明的解決方案,它也很快!我在https://3v4l.org/IRfV7#output上運行了你的代碼。如果您要添加關於代碼如何工作的簡要說明,則會改進您的答案。 – slevy1

0

我最初的反應是採取更行人的做法,可以作爲您可以從這個example注意。然後我偶然發現了一個相關的discussion

另一種方法涉及對數組進行排序,然後檢查重複對的數字對。下面的代碼是OP的陣列與我的邁克爾·馬丁到PHP的大概C源代碼的翻譯耦合的結果,具體如下:

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

相關問題