Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
133 / 133 / 48
Регистрация: 26.04.2013
Сообщений: 1,356
1

Поиск приближенного числа в многомерном ассоциативном массиве

18.10.2017, 01:55. Показов 1361. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Нужна функция которая найдет массив с максимально приближенным значением к числу с приоритетом в левую(меньшую сторону)

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
function find($array,$key,$number) {
    
    $values = [];
 
    foreach ($array as $k =>  $value) {
        $values[$k] = $value[$key];  //Вытаскиваем только значения из массива с ключем 'price'
    }
    
    arsort($values);//сортируем их по убыванию т.к я не нашел функции которая сортирует по возрастанию с сохранением ключей.
    $values = array_reverse($values,true);//после чего используем реверс с сохранением ключей, тем самым получилась сортировка по возрастанию с сохраненными ключами
 
    foreach ($values as $k => $value) {
        if($value == $number) return $array[ $k ];//если первый элемент массива подходит под наше число.
 
        if($value > $number) {
            return $array[ $prev_index ];
        }
 
        end($values); 
        $last_key = key($values); 
 
        if($k == $last_key) { //Если значение которое мы ищем больше самого максимального значения в массиве 
            return $array[ $k ];
        }
 
        $prev_index = $k; //Сохраняем якобы предыдущий ключ. Не можем использовать for цикл 
    }
    
}
 
$arr2 = [
    ['price' => 33],
    ['price' => 15],
    ['price' => 19],
    ['price' => 16],
    ['price' => 55],
    ['price' => 20],
    ['price' => 10]
];
 
print_r(find($arr2,'price',100));
Поделитесь вашими процессиональными(правильными) решениями, мне пока только такое в голову пришло.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.10.2017, 01:55
Ответы с готовыми решениями:

Поиск (max) and (min) числа в многомерном массиве без участия компонента StringGrid
Подскажите... Поиск (max) and (min) числа в многомерном массиве без участия компонента StringGrid....

Поиск в многомерном массиве
Доброго дня, подскажите , как с массива $array_data, удалить все ключи, в которых содержится...

Поиск ключа в многомерном массиве
Здравствуйте! Помогите пожалуйста новичку как мне вытаскивать значение ключа в много мерном массиве...

Поиск в многомерном массиве, содержащем информацию о книгах
Есть что-то вроде базы книг с четырьмя столбцами: Наименование, Автор, Год, Издательство Как...

3
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
18.10.2017, 19:28 2
maruo,
https://secure.php.net/manual/... column.php
https://secure.php.net/manual/... .asort.php
end по итерируемому массиву - так себе идея.
И в сортировке смыслс не вижу. Сложность сортировки n*log(n) против n на поиск в неотсортированном массиве
1
133 / 133 / 48
Регистрация: 26.04.2013
Сообщений: 1,356
18.10.2017, 20:16  [ТС] 3
Jewbacabra,
Упс понял почему вы сначала указали на функцию array_column поспешил...

Добавлено через 21 минуту
Цитата Сообщение от Jewbacabra Посмотреть сообщение
И в сортировке смыслс не вижу.
Ну для меня это показалось самое простое решение.
Ибо мы сортируем массив по возрастанию и бежим по нему через цикл и как только число становится выше нашего мы возвращаем предыдущий.
Ведь наша задача вернуть приближенный элемент к нашему числу с приоритетом в меньшую сторону.

т.к если у нас такой массив [5,7,9] и у нас число 8. 7 и 9 одинаково приближены. и нам нужно вернуть 7

Можете пояснить подробнее?
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
18.10.2017, 21:48 4
Цитата Сообщение от maruo Посмотреть сообщение
т.к если у нас такой массив [5,7,9] и у нас число 8. 7 и 9 одинаково приближены. и нам нужно вернуть 7
Хранить во временной переменной текущее ближайшее значение и на каждой итерации его сравнивать
1
18.10.2017, 21:48
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.10.2017, 21:48
Помогаю со студенческими работами здесь

Как реализовать поиск значения в многомерном массиве
есть двухмерный массив: double Array = new double; 100 это количество строк 5 это количество...

Поиск мах элемента в динамическом многомерном массиве
Кто-нибуть может подсказать реализацию идеи алгоритма поиска максимального элемента в многомерном...

Поиск значения в многомерном массиве, с неограниченной вложеностью
Всем привет! Помогите с многомерным массивом, нужно получить значение в многомерном массиве! ...

Найти индекс числа в многомерном массиве
Задача стоит такая, мы генерируем массив, N на M, заполняем случайными числами, дальше приступаем к...

Есть ли в многомерном массиве простые числа
Определить, есть ли в многомерном массиве простые числа, и вывести номер строки, в которой...

Поиск слов в многомерном массиве, с однократным выводом сообщения о не найденном значении
Всем привет! Возникла не сложная (думаю для многих) проблемка. Создал многомерный простой массив...


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

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