繁体   English   中英

使用Array_filter将大关联数组分解成较小的关联数组

[英]Big Associative Array into Smaller Associative Arrays using Array_filter

我正在努力计算各种足球运动员的通过率。 我有一个要从中提取信息的.txt文件。

while($line = fgetcsv($fp, 255, ',')){
$rate = round(calcPR($line),2);
$rating[$line[0]] = $rate;
} return $rating;

那是我使用$ fp从.txt文件读取的函数的一部分,这是我试图显示数据的地方,但是在尝试显示数据之前,我尝试将数据拆分为通过大,好,中,差的评分。

对于一个伟大的评级,他们必须高于95,所以我有:

$grtRating = array_filter($rating,function(){
       return $rating > 95;
});

我的代码的其余部分(好,平庸和差)看起来几乎相同,但是条件不同。 如何获取$ grtRating数组以仅存储高于95的分数?

当前,当我运行程序时,它基本上会忽略运算符,并显示所有评级,无论评级多么低。

更新:$ poorRating数组的输出:(这就是所有<86)

Array ( [Cody Kessler] => 85.91 [Kirk Cousins] => 82.34 [Jacoby   Brissett] => 81.68 [Ryan Tannehill] => 81.2 [Tyrod Taylor] => 79.29 [Ben   Roethlisberger] => 77.49 [Shaun Hill] => 77.32 [Carson Palmer] => 74.79 [Jameis   Winston] => 73.93 [Marcus Mariota] => 73.06 [Joe Flacco] => 71.77 [Cam Newton]  => 70.32 [Josh McCown] => 70.25 [Trevone Boykin] => 69.2 [Jay Cutler] => 68.46  [Blake Bortles] => 67.13 [Brock Osweiler] => 66.1 [Blaine Gabbert] => 63.35  [Case Keenum] => 60.63 [Ryan Fitzpatrick] => 48.93 [Robert Griffin III] => 48.54  [Drew Stanton] => 34.36 [Kellen Clemens] => 2.07 )

我认为问题可能出在我随后如何输出代码。 我的链接在无序列表中。

这是一个例子:

<a href='pr.php?action=all'>All Ratings</a>

我有一个pr.php?action=great', pr.php?action = good', pr.php?action=mediocre', and pr.php?action ='poor'。

这是我输出所有内容的方式,这是我的问题所在吗?

$mode = 'all';

if ($_GET['action'] == 'great') $mode = 'great';
if ($_GET['action'] == 'good') $mode = 'good';
if ($_GET['action'] == 'mediocre') $mode = 'mediocre';
if ($_GET['action'] == 'poor') $mode = 'poor';

    if($mode == 'great'){
                    foreach($greatRating as $name=>$pr){
                            echo "<tr><td>{$name}</td><td>{$pr}</td></tr>\n";
                    }
            }
           if($mode == 'good'){
                    foreach($goodRating as $name=>$pr){
                    echo "<tr><td>{$name}</td><td>{$pr}</td></tr>\n";
                    }
             }
           if($mode == 'mediocre'){
                    foreach($mediocreRating as $name=>$pr){
                    echo "<tr><td>{$name}</td><td>{$pr}</td></tr>\n";
                    }
            }
           if($mode == 'poor'){
                    foreach($poorRating as $name=>$pr){
                    echo "<tr><td>{$name}</td><td>{$pr}</td></tr>\n";
                    }
            }
            if($mode = 'all'){
                    foreach($rating as $name=>$pr){
                    echo "<tr><td>{$name}</td><td>{$pr}</td></tr>\n";
                    }
            }


    echo "</table></div>\n";
}

您能帮我弄清楚我的错误在哪里吗?

更换

$grtRating = array_filter($rating,function(){
    return $rating > 95;
});

$grtRating = array_filter($rating, function($val) {
   return $val > 95;
});

在第一个中,您没有包括包含从数组的每次迭代传递的值的回调参数,该值将在您的评估中使用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM