php数组按数组中的值投票
我有一个有很多值的数组,我想得到一个值是所有值的多个显示。像这样 我的阵列php数组按数组中的值投票,php,arrays,sorting,Php,Arrays,Sorting,我有一个有很多值的数组,我想得到一个值是所有值的多个显示。像这样 我的阵列 $allValues = array(0,1,1); // i want to get 1, because two 1 vs one 0 // other example $allValue = array(0,0,0,1,1); // I want to get 0, because three 0 vs two 1 // other example $allValues = array
$allValues = array(0,1,1); // i want to get 1, because two 1 vs one 0
// other example
$allValue = array(0,0,0,1,1); // I want to get 0, because three 0 vs two 1
// other example
$allValues = array(0,1); // I want to get 0, because one 0 vs one 1 is 50:50 but 0 is first value
对不起,我的英语不好。
<?php
$allValues = array(0,1,1);
$result=array_count_values($allValues); // Count occurrences of everything
arsort($result); // Sort descending order
echo key($result); // Pick up the value with highest number
?>
编辑:我使用了key()
,因为您想知道出现次数最多的值,而不是数字本身。如果您只需要这个号码,可以删除key()
call
编辑:我使用了key()
,因为您想知道出现次数最多的值,而不是数字本身。如果您只需要这个号码,可以删除key()
call
仅适用于0和1
function evaluateArray($array) {
$zeros = 0;
$ones = 0;
foreach($array as $item) {
if($item == 0) {
$zeros++;
} else {
$ones++;
}
}
// Change this if you want to return 1 if the result is equal
// To return ($ones >= $zeros) ? 1 : 0;
return ($zeros >= $ones) ? 0 : 1;
}
仅适用于0和1
function evaluateArray($array) {
$zeros = 0;
$ones = 0;
foreach($array as $item) {
if($item == 0) {
$zeros++;
} else {
$ones++;
}
}
// Change this if you want to return 1 if the result is equal
// To return ($ones >= $zeros) ? 1 : 0;
return ($zeros >= $ones) ? 0 : 1;
}
试试这个
$allValues = array(0,0,0,1,1);
$count = array_count_values($allValues);
echo $val = array_search(max($count), $count);
试试这个
$allValues = array(0,0,0,1,1);
$count = array_count_values($allValues);
echo $val = array_search(max($count), $count);
试试这个:
function find_value($array) {
$zeros = 0;
$ones = 0;
for($i = 0; $i < count($array); $i++) {
($array[$i] == 0) ? $zeros++ : $ones++;
}
if($zeros == $ones) return $array[0];
return ($zeros > $ones) ? 0 : 1;
}
函数查找值($array){
$zeros=0;
$one=0;
对于($i=0;$i$1)?0:1;
}
试试这个:
function find_value($array) {
$zeros = 0;
$ones = 0;
for($i = 0; $i < count($array); $i++) {
($array[$i] == 0) ? $zeros++ : $ones++;
}
if($zeros == $ones) return $array[0];
return ($zeros > $ones) ? 0 : 1;
}
函数查找值($array){
$zeros=0;
$one=0;
对于($i=0;$i$1)?0:1;
}
您可以使用数组\u计数\u值-对数组的所有值进行计数
<?php
$array = array(1, "hello", 1, "world", "hello");
print_r(array_count_values($array));
?>
输出
排列
(
[1] => 2
[你好]=>2
[世界]=>1
)您可以使用数组\u计数\u值-对数组的所有值进行计数
<?php
$array = array(1, "hello", 1, "world", "hello");
print_r(array_count_values($array));
?>
输出
排列
(
[1] => 2
[你好]=>2
[世界]=>1
)查找阵列模式-看起来像。非常清楚地解释了问题和要求,但没有努力:)查找阵列模式-看起来像。非常清楚地解释了问题和要求,但没有努力:)最短和有效的解决方案。竖起大拇指!我觉得这不是最短的。我想可以进一步缩短:)好男人,非常感谢@Hanky웃 潘基。你的答案是:第三个例子怎么样?这将返回
数组(0,1)
的1
,而不是OP请求的0
。否则,这是一个巧妙的解决方案。我也可以继续为此编写代码,但你知道OP应该接受这个想法,然后自己构建它:)否则它会变成一个复制粘贴工作,没有学习是最短、最有效的解决方案。竖起大拇指!我觉得这不是最短的。我想可以进一步缩短:)好男人,非常感谢@Hanky웃 潘基。你的答案是:第三个例子怎么样?这将返回数组(0,1)
的1
,而不是OP请求的0
。否则,这是一个巧妙的解决方案。我也可以继续并为此编写代码,但你知道OP应该接受这个想法,然后为自己构建:)否则它将成为一个复制粘贴工作,没有学习的机会。此解决方案使用所有输入,使用的代码比公认的答案少。做得好!然而,你应该把你在这里所做的分解,这可能对每个人来说都是显而易见的。@Antti29是的,这段代码将对所有给定的输入都有效,但它使用的代码不会少于公认的答案。接受答案使用3个函数调用和一个赋值,此答案使用3个函数调用和2个赋值。仅仅因为一些函数调用是嵌套的,不是代码就少了吗?@Hanky웃Panky和我假设对数组进行排序(特别是当它变得非常大时)比调用array\u search()
和max()
更有效?你使用的作业少了一个,因为你只是在重复结果,这也是这个答案可以做的。是的,做一个基准测试,看看哪个答案更快,如果你喜欢这些数字。我为你设置了一个,但后来我删除了,因为这不是问题所在。你可以对这两个答案进行基准测试,我就是这么做的,并且发现结果在所有意图和目的上都是相同的(差异不同,并且在误差范围内)。如果您使用第三个示例输入使代码返回0
,那么您的代码是否仍然会如此快速?此解决方案适用于所有输入,并且使用的代码比接受的答案少。做得好!然而,你应该把你在这里所做的分解,这可能对每个人来说都是显而易见的。@Antti29是的,这段代码将对所有给定的输入都有效,但它使用的代码不会少于公认的答案。接受答案使用3个函数调用和一个赋值,此答案使用3个函数调用和2个赋值。仅仅因为一些函数调用是嵌套的,不是代码就少了吗?@Hanky웃Panky和我假设对数组进行排序(特别是当它变得非常大时)比调用array\u search()
和max()
更有效?你使用的作业少了一个,因为你只是在重复结果,这也是这个答案可以做的。是的,做一个基准测试,看看哪个答案更快,如果你喜欢这些数字。我为你设置了一个,但后来我删除了,因为这不是问题所在。你可以对这两个答案进行基准测试,我就是这么做的,并且发现结果在所有意图和目的上都是相同的(差异不同,并且在误差范围内)。如果您使用第三个示例输入使代码返回0
,那么您的代码是否仍会如此快速?