2015-02-12 2 views
1

У меня есть массив, заполненный данными в течение месяца. Данные вычисляются за каждые 15 минут за этот период, то есть у него около 2880 записей.Равномерно уменьшая индексированный массив на 10%

Мне нужно уменьшить его примерно на 10%, чтобы отобразить данные на диаграмме (288 точек данных будут отображаться намного лучше, чем 2880).

Вот что я пытался (это работает, но это может быть очень плохой метод):

$count = count($this->Data1Month); 
for($i = 0; $i < $count; $i += 10) { 
    $tempArray[] = $this->DataMonth[$i]; 
} 
$this->Data1Month = $tempArray; 
+0

Какую эффективность вы используете? – eis

+1

Я считаю, что foreach быстрее, чем для цикла для массивов –

+2

Я голосую, чтобы закрыть этот вопрос как не относящийся к теме, потому что OP просит просмотреть код. – Mooseman

ответ

1

Я думаю, что у вас есть наиболее эффективное решение, но у вас есть ошибка, хотя. Индексы массивов начинаются с нуля, поэтому 0 + 10 должно быть равно 9:

$count = count($this->Data1Month); 
for($i = 0; $i < $count; $i += 9) { 
    $tempArray[] = $this->DataMonth[$i]; 
} 
$this->Data1Month = $tempArray; 
+0

Это перечислит 2880 раз через массив. Текущий код только петли 288 раз. –

+0

не говоря уже удаляет исходные данные, которые могут быть или не нужны – eis

+1

@Chuck Я думаю, что у вас есть наиболее эффективное решение, но у вас есть ошибка. Индексы массива начинаются с нуля, поэтому 0 + 10 должно быть 9. См. Мое редактирование, пожалуйста. Говоря о том, что: мое оригинальное решение не принимало во внимание ни LOL – MonkeyZeus

Смежные вопросы