Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php数组按数组中的值投票_Php_Arrays_Sorting - Fatal编程技术网

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
,那么您的代码是否仍会如此快速?