php – 将数组键分组到数字范围内,可能吗?
发布时间:2020-12-13 18:24:25 所属栏目:PHP教程 来源:网络整理
导读:我有以下数组: ( [25] = 1 [26] = 3 [10] = 2 [24] = 1) 它是使用PHP中的 array_count_values() 函数创建的. 在array_count_values之前,实际的原始数组是这样的…… Array( [0] = 26 [1] = [2] = 18 [3] = 28 [4] = 22 [5] = 21 [6] = 26 [7] = [8] = [9] =
我有以下数组:
( [25] => 1 [26] => 3 [10] => 2 [24] => 1 ) 它是使用PHP中的 在array_count_values之前,实际的原始数组是这样的…… Array ( [0] => 26 [1] => [2] => 18 [3] => 28 [4] => 22 [5] => 21 [6] => 26 [7] => [8] => [9] => [10] => [11] => [12] => [13] => [14] => [15] => [16] => [17] => [18] => [19] => [20] => ) 这些是年龄,那么我如何将这些分组到年龄组? 假设我想要以下年龄组:< = 18 19-26 27-32> 32 它应该看起来: ( [<= 18] => 1 [19-26] => 4 [27-32] => 2 [ > 32] => 1 ) 这是否有现成的功能? 我的解决方案
有趣的问题.这是我的解决方案.首先,定义一个年龄范围数组:
$age_ranges = array( array( 0,18),array( 19,26),array( 27,32),array( 33,150) // I use 150 as the "max" age ); 然后,我们有你的array_count_values()输出: $array_count_values = array( 25 => 1,26 => 3,10 => 2,24 => 1); // From OP 现在,我们创建一个包含所有年龄的数组,其中键是年龄,值是具有该年龄的人数.它需要按其键进行排序以进行下一步. $all_ages = $array_count_values + array_fill( 0,150,0); ksort( $all_ages); 最后,我循环遍历所有年龄范围,从$all_ages数组中切除年龄范围,并将它们的值相加以生成年龄范围的数组,其值对应于落入该年龄范围的人数. $result = array(); foreach( $age_ranges as $range) { list( $start,$end) = $range; $result["$start-$end"] = array_sum( array_slice( $all_ages,$start,$end - $start + 1)); } print_r($result); yields the following output: Array ( [0-18] => 2 [19-26] => 5 [27-32] => 0 [33-150] => 0 ) 编辑:由于您仍然可以访问原始数组,因此您可以计算出最后有多少“未知数”: $result['unknown'] = count( array_filter( $original_array,function( $el) { return empty( $el); })); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |