我使用其他语言对这个问题有很多答案,但我想用php语言答案。请任何人帮助我 这是我的数组看起来像
$array = [1, 2, 3, 4, 4, 1, 2, 5, 5, 11, 11];
答案 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/867433或https://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