我确信这很简单,而且我只是未能正确为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 )
这有意义吗?
有没有找到的更简单的方法?
答案 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;
}