我有一个如下所示的数组:
[numbers] => Array
(
[2017-05-14] => 319594
[2017-05-15] => 319774
[2017-05-16] => 319962
[2017-05-17] => 320135
[2017-05-18] => 320304
[2017-05-19] => 320459
[2017-05-20] => 320590
[2017-05-21] => 320752
[2017-05-22] => 320882
[2017-05-23] => 320991
[2017-05-24] => 321093
[2017-05-25] => 321144
[2017-05-26] => 323124
[2017-05-27] => 324534
[2017-05-28] => 325123
[2017-05-29] => 326453
)
每天收集数据,并使用ChartJS在折线图上显示。我担心一两个月之后会有太多日期。
假设我想在开始日期和结束日期之间只保留6个键。如何在第一个和最后一个日期之间平均地弹出键?这必须适用于任何大小的数组。
我必须保存第一个和最后一个键。
编辑:
这就是我想出的。这是正确的方法吗?
$items = Array(
"2017-05-14" => 319594,
"2017-05-15" => 319774,
"2017-05-16" => 319962,
"2017-05-17" => 320135,
"2017-05-18" => 320304,
"2017-05-19" => 320459,
"2017-05-20" => 320590,
"2017-05-21" => 320752,
"2017-05-22" => 320882,
"2017-05-23" => 320991,
"2017-05-24" => 321093,
"2017-05-25" => 321144,
"2017-05-26" => 323124,
"2017-05-27" => 324534,
"2017-05-28" => 325123
);
$desiredSize = 8 ;
$desiredSize--;
$arrayCount = count($items) - 1;
$factor = $arrayCount / $desiredSize;
echo 0 ."\n";
for ( $i = 1; $i <= $desiredSize; $i++ ) {
echo floor( $i * $factor ) ."\n";
}
答案 0 :(得分:0)
您可以结合使用array_slice
,array_keys
和array_search
个功能
假设您希望从密钥2017-05-18
到2017-05-25
获取一些数组。代码如下所示:
$arrayKeys = array_keys($array);
$firstElementIndex = array_search('2017-05-18', $arrayKeys);
$lastElementIndex = array_search('2017-05-25', $arrayKeys);
$sliceLenght = $lastElementIndex - $firstElementIndex + 1;
$result = array_slice($array, $firstElementIndex, $sliceLenght, true);
$array
是您的日期数组