【问题标题】:Count how many times numbers from one array occur in another计算一个数组中的数字在另一个数组中出现的次数
【发布时间】:2020-08-22 05:13:34
【问题描述】:

我确信这很简单,但我只是未能正确地为 google 措辞。希望我能在这里把它拼写得足够好,有人能指出我正确的方向!

我正在使用 php 和 chart.js 绘制关于 mma 战士的统计数据,我想绘制他们每年获得的胜利(或失败或 ko 等)的数量。。 p>

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

例如

$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 )

这有意义吗?

是否有一些我没有找到的更简单的方法?

【问题讨论】:

  • 您只需要使用for each 循环遍历数组,每次值等于您要查找的值时增加计数器。

标签: php


【解决方案1】:

使用foreach 循环遍历$career_span 数组,并检查$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;
}

【讨论】:

  • 没问题。如果你能投票,你会让我的周末。 ;)
  • 完成!实际上没有意识到在这里投票是一回事哈哈
  • 太棒了!谢谢你。 :)
猜你喜欢
  • 1970-01-01
  • 2019-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多