根据日期

时间:2017-05-25 12:13:00

标签: php arrays

我有一个如下所示的数组:

[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";
}

1 个答案:

答案 0 :(得分:0)

您可以结合使用array_slicearray_keysarray_search个功能 假设您希望从密钥2017-05-182017-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是您的日期数组