Blog. Just Blog

Быстрый поиск

Введите фрагмент названия статьи для поиска

Расстояние между двумя точками на карте

27.08.2017 | Категория: Web-мастеру и не только | Автор: ManHunter

Расстояние между двумя точками на карте

Одна из задач, с которой могут столкнуться разработчики - вычисление расстояния между двумя точками на карте. Это может быть определение объектов, которые находятся вблизи какой-то конкретной точки, оценка времени перемещения из одной точки в другую, вариантов применения может быть много.

Читать статью целиком »
Просмотров: 3881 | Комментариев: 2

Выборка родительских элементов в древовидном массиве

18.08.2017 | Категория: Web-мастеру и не только | Автор: ManHunter
Создавать многомерный массив из одномерного массива с указателями на родительские элементы мы уже умеем. Но может возникнуть другая задача: зная ID элемента, надо получить все его родительские элементы, причем уровень вложенности может быть абсолютно любым. Пример из практики. В базе хранится список стран и регионов, перелинкованный через указатели на родительские элементы. Если его развернуть в многомерный массив, то получится примерно следующее:
  1. $regions=array(
  2.     1=>array(
  3.         'name'=>'Россия',
  4.         'parent'=>0,
  5.         'child'=>array(
  6.             2=>array(
  7.                 'name'=>'Москва и Московская область',
  8.                 'parent'=>1,
  9.                 'child'=>array(
  10.                     3=>array(
  11.                         'name'=>'Москва',
  12.                         'parent'=>2,
  13.                         'child'=>array(
  14.                         ),
  15.                     ),
  16.                     5=>array(
  17.                         'name'=>'Московская область',
  18.                         'parent'=>2,
  19.                         'child'=>array(
  20.                             6=>array(
  21.                                 'name'=>'Дмитровский район',
  22.                                 'parent'=>6,
  23.                                 'child'=>array(
  24.                                     7=>array(
  25.                                         'name'=>'Дмитров',
  26.                                         'parent'=>6,
  27.                                         'child'=>array(),
  28.                                     ),
  29.                                     9=>array(
  30.                                         'name'=>'Яхрома',
  31.                                         'parent'=>6,
  32.                                         'child'=>array(),
  33.                                     ),
  34.                                 ),
  35.                             ),
  36.                         ),
  37.                     ),
  38.                 ),
  39.             ),
  40.             4=>array(
  41.                 'name'=>'Пермский край',
  42.                 'parent'=>1,
  43.                 'child'=>array(
  44.                     8=>array(
  45.                         'name'=>'Пермь',
  46.                         'parent'=>4,
  47.                         'child'=>array(),
  48.                     ),
  49.                     10=>array(
  50.                         'name'=>'Соликамск',
  51.                         'parent'=>4,
  52.                         'child'=>array(),
  53.                     ),
  54.                     11=>array(
  55.                         'name'=>'Кунгур',
  56.                         'parent'=>4,
  57.                         'child'=>array(),
  58.                     ),
  59.                 ),
  60.             ),
  61.         ),
  62.     ),
  63. );
Есть некие объекты, привязанные к региону по его ID. Как получить список всех вышестоящих регионов для конкретного объекта?

Читать статью целиком »
Просмотров: 1955 | Комментариев: 2

Сумма прописью на PHP

07.08.2017 | Категория: Web-мастеру и не только | Автор: ManHunter

Сумма прописью на PHP

В соответствии с нормативными актами, регламентирующими порядок работы с бухгалтерскими документами, при заполнении многих унифицированных форм сумма указывается не только числами, но и прописью. Формат записи принят следующий: рублевая часть суммы указывается прописью в именительном падеже с заглавной буквы, а копейки обозначаются цифрами. При автоматической генерации документов на PHP с цифровыми выражениями проблем в принципе не возникает, а для преобразования чисел в сумму прописью я уже давно написал и использую вот такую функцию.

Читать статью целиком »
Просмотров: 6431 | Комментариев: 7

Рекурсивный обход каталогов на PHP

17.07.2017 | Категория: Web-мастеру и не только | Автор: ManHunter
Понадобилась универсальная функция для рекурсивного сканирования выбранного каталога, но не просто так, а с обработчиком найденных файлов. Вот что у меня получилось:
  1. //--------------------------------------------------------------
  2. // Функция рекурсивного сканирования каталога
  3. //--------------------------------------------------------------
  4. // Параметры:
  5. //   $directory - начальный каталог
  6. //   $callback - функция для обработки найденных файлов
  7. //--------------------------------------------------------------
  8. function scan_recursive($directory$callback=null) {
  9.     // Привести каталог в канонизированный абсолютный путь
  10.     $directory=realpath($directory);
  11.  
  12.     if ($d=opendir($directory)) {
  13.         while($fname=readdir($d)) {
  14.             if ($fname=='.' || $fname=='..') {
  15.                 continue;
  16.             }
  17.             else {
  18.                 // Передать путь файла в callback-функцию
  19.                 if ($callback!=null && is_callable($callback)) {
  20.                     $callback($directory.DIRECTORY_SEPARATOR.$fname);
  21.                 }
  22.             }
  23.  
  24.             if (is_dir($directory.DIRECTORY_SEPARATOR.$fname)) {
  25.                 scan_recursive($directory.DIRECTORY_SEPARATOR.$fname$callback);
  26.             }
  27.         }
  28.         closedir($d);
  29.     }
  30. }
Пример вызова функции:
  1. // Callback-функция, которая будет принимать имена файлов
  2. function scan_callback($fname) {
  3.     echo $fname.'<br/>';
  4. }
  5.  
  6. // Вывести список файлов и каталогов
  7. scan_recursive('C:/some_dir\subfolder/''scan_callback');
В этом случае будет просто выведен список файлов и вложенных каталогов с содержимым, находящихся по указанному пути. Функцию можно доработать, например, добавив возможность остановки сканирования при получении какого-нибудь ответа из callback-функции. Но пока такой задачи не возникало.

Просмотров: 6563 | Комментариев: 6

Ресайз изображений с размытым фоном на PHP

17.04.2017 | Категория: Web-мастеру и не только | Автор: ManHunter

Ресайз изображений с размытым фоном на PHP

Некоторое время назад я обратил внимание на интересный графический эффект, который используется в телевидении и социальных сетях. Он применяется, например, для разворачивания вертикального видео на горизонтальный экран без черных полос по бокам, для подгона разномастных изображений под единый формат. Суть этого эффекта заключается в том, что оригинальный кадр или снимок растягивается под нужный размер по ширине или высоте, из его середины вырезается участок нужного размера и сильно размывается. На полученную подложку накладывается оригинальное изображение.

Читать статью целиком »
Просмотров: 3273 | Комментариев: 8

01 ... 07 08 09 10 11 12 13 ... 24
Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2024
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.08 сек. / MySQL: 3 (0.0088 сек.) / Память: 4.5 Mb
Наверх