如何比较多维数组中的值

时间:2017-06-27 01:33:21

标签: php arrays loops multidimensional-array iteration

我正在制定一个生物指标选举制度,但我在选举结果方面遇到了问题。

执行查询后我得到了这个数组。

Array
(
    [paty1] => Array
        (
            [NA122] => stdClass Object
                (
                    [count] => 2
                )    

            [NA2] => stdClass Object
                (
                    [count] => 0
                )

                [NA56] => stdClass Object
                (
                    [count] => 1
                )

        )

    [party2] => Array
        (
            [NA122] => stdClass Object
                (
                    [count] => 0
                )

            [NA2] => stdClass Object
                (
                    [count] => 0
                )

            [NA56] => stdClass Object
                (
                    [count] => 0
                )

        )

)

此数组存储在$data中,它可以包含无限索引。

现在,如果[Paty1][NA122]的计数大于[Party2][NA122]的计数,那么我将在Party1中声明NA122获胜,我必须将其与n个索引进行比较。

e.g。还有另一个索引pary3所以首先我将[party1][NA122][party2][NA122]的计数进行比较,然后与[party3][NA122]进行比较,获胜者将是计数更大的人。你能帮帮我吗?

提前致谢

3 个答案:

答案 0 :(得分:0)

所以你想要获得给定NA#的最大数量的派对。 你可以使用这样的函数:

function maxParty($data, $na) {
    $max = null;
    foreach($data as $party => $values) {
        if(is_null($max)) {
            $max = $party;
            continue;
        } else {
            if($values[$na]->count > $data[$max][$na]->count) {
                $max = $party;
            }
        }
    }
    return $max;
}

然后使用$ data数组和要计算最大聚会的NA#来提供此函数。例如

$winner = maxParty($data, 'NA122');

它将返回获胜方的密钥。即“A方”

答案 1 :(得分:0)

试试这个:

foreach(current($Result) as $Const=>$val){

 echo "Winner of Constituency '$Const': ". findWinner($Const,$Result).PHP_EOL;

}

function findWinner($Const, $Result){
 $Max = 0;
 $Winner = '';

  foreach($Result as $Party => $ConstList){
     if($ConstList[$Const]->count>$Max){
        $Max = $ConstList[$Const]->count;
        $Winner = $Party;
     }
  }
 return $Winner;
}

点击此处查看实时代码: https://www.tehplayground.com/x5sPu7JxuexOdwU8

答案 2 :(得分:0)

你的意思是这样的:

to_char()

说明: getData返回一个类似你描述的数组

foreach($ data as $ key => $ paty) - 遍历整个数组

if() - 检查当前值是否大于先前的最大值

如果您想了解有关PHP的更多信息: foreachobjectsarraysgoogle