计算一个数组中的数字出现在另一个数组中的次数

时间:2020-08-22 05:13:34

标签: php

我确信这很简单,而且我只是未能正确为Google措辞。希望我能在这里说得足够清楚,以便有人可以指出正确的方向!

我正在使用php和chart.js来绘制有关mma战斗机的统计数据,我想绘制出他们每年 赢得了多少次胜利(或损失或ko的胜利等)。

>

我已经能够创建一个数组,显示每个损失的年份(请注意,重复存在,一年中发生了多次损失)

例如

$loss_years = Array ( [0] => 2019 [1] => 2016 [2] => 2014 [3] => 2013 [4] => 2012 [5] => 2011 [6] => `2011 [7] => 2010 [8] => 2009 [9] => 2009 [10] => 2006 [11] => 2005 )`

我已经能够计算出每年确实发生这样的损失的次数:

array_count_values(array_reverse ($loss_years)));

哪个输出:

array(10) { ["2005 "]=> int(1) ["2006 "]=> int(1) ["2009 "]=> int(2) ["2010 "]=> int(1) ["2011 "]=> int(2) ["2012 "]=> int(1) ["2013 "]=> int(1) ["2014 "]=> int(1) ["2016 "]=> int(1) ["2019 "]=> int(1) }

但是我希望能够在他们的职业生涯的每一年中对其进行交叉引用。

因此,如果他们的职业跨度表示为:

$career_span = Array ( [0] => 2004 [1] => 2005 [2] => 2006 [3] => 2007 [4] => 2008 [5] => 2009 [6] => 2010 [7] => 2011 [8] => 2012 [9] => 2013 [10] => 2014 [11] => 2015 [12] => 2016 [13] => 2017 [14] => 2018 [15] => 2019 [16] => 2020 )

然后我想将其与$ loss_years交叉引用,并输出第三个数组$ losses_per_year,它看起来像:

Array ( [0] => 0 [1] => 1 [2] => 1 [3] => 0 [4] => 0 [5] => 2 [6] => 1 [7] => 2 [8] => 1 [9] => 1 [10] => 1 [11] => 0 [12] => 1 [13] => 0 [14] => 0 [15] => 1 [16] => 0 )

这有意义吗?

有没有找到的更简单的方法?

1 个答案:

答案 0 :(得分:1)

通过$career_span循环遍历foreach数组,并检查$loss_years数组中每个职业年的损失数量(在对其应用array_count_values之后)。

您可以使用PHP ternary operator检查$loss_years中是否有与职业年份匹配的数组键。如果是这样,请加上该年的损失数。如果不是,则添加零。

$loss_years = array_count_values( $loss_years );
foreach ( $career_span as $career_year ) {
    $losses_per_year[] = array_key_exists( $career_year, $loss_years ) ? $loss_years[$career_year] : 0;
}
相关问题