Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
Скрытый в тени
24 / 16 / 6
Регистрация: 07.01.2016
Сообщений: 71
1

Выбрать из массива наиболее приближенную дату

14.05.2018, 16:49. Показов 819. Ответов 1

Author24 — интернет-сервис помощи студентам
Есть два массива с датами:

PHP
1
2
3
$arr1 = array('2018.03.29','2018.03.29','2018.03.29',
               '2018.04.17','2018.04.17');
$arr2 = array('2018.02.28','2018.03.30','2018.04.29','2018.05.10');
Для каждой даты из массива $arr1 нужно выбрать наиболее приближенную дату из массива $arr2. Далее я прохожусь в цикле по элементам массивов и сравниваю их:

PHP
1
2
3
4
5
6
7
8
 foreach($arr1 as $id1 => $value1){
     foreach($arr2 as $id2 => $value2){
         if($value2 <= $value1){
             $result[] = $id1.")".$value1 . "=>" . $id2.")". $value2;
 
         }
     }
 }
В массив $result заносится следующее:

PHP
1
2
3
4
5
6
7
8
 
 0 => 2018.03.29=>2018.02.28
 1 => 2018.03.29=>2018.02.28
 2 => 2018.03.29=>2018.02.28
 3 => 2018.04.17=>2018.02.28
 4 => 2018.04.17=>2018.03.30
 5 => 2018.04.17=>2018.02.28
 6 => 2018.04.17=>2018.03.30
Работает в общем правильно, но нужно отбросить лишнее. То есть дата "2018-03-30" (индекс 4 и 6) наиболее приближена к "2018-04-17", значит дату "2018-02-28" (индекс 3 и 5) нужно отбросить
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.05.2018, 16:49
Ответы с готовыми решениями:

Нужно выбрать диапазон из чисел (из массива) и вывести начальную и конечную дату
Есть таблица с цифрами и текстом. Нужно в каждой строке найти диапазон чисел и вывести в отдельную...

Выбрать из двух, наиболее мощный
Добрый день. У меня есть два компа, один из них собираюсь продать, что бы купить ноутбук. ...

Выбрать наиболее длинную строку.
В универе дали лабораторную работу, а я эту тему вообще не понял, помогите пожалуйста, если не сдам...

выбрать наиболее крупного конкурента.
помогиет сделать а Паскале: фирма изучает конкурентов на рынке сбыта своего товара и имеет...

1
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
14.05.2018, 20:24 2
Работает совершенно не правильно.
1) Недостаточно сравнить 2 даты. Надо найти время между ними. Я бы превратил в timestamp и считал разницу в секундах по модулю. Это можно делать и стандартными средствами, но для дат я предпочитаю использовать библиотеку Carbon.
2) Лишнее возникает так как вы сравниваете только 2 даты между собой и сразу пихаете их в результат. Надо сравнить со всеми датами второго массива и только потом выбрать наиболее подходящую (с наименьшей разницей в секундах).
0
14.05.2018, 20:24
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.05.2018, 20:24
Помогаю со студенческими работами здесь

Выбрать наиболее крупного конкурента
вот задача: Фирма изучает конкурентов на рынке сбыть своего товара и имеет следующие сведения:...

Выбрать из базы наиболее похожий график
Здравствуйте. Есть база данных с графиками (оцифрованые в 2х мерной системе координат). И есть...

Выбрать дату с бд
Есть таблица comment в базе в ней строка `date` -&gt;&gt; тип datetime по умолчанию ничего невыберал. ...

Выбрать максимальную дату
Есть таблица с тремя полями: - numeric - varchar - datetime. Пример нескольких строк: 1....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru