
Bohdan
20.02.2018
10:39:55
плюс сейчас смотрю на то, что делает коллега (tts/stt обертка) - тоже на го можно было бы

Sergey
20.02.2018
11:38:25
hello world. кто делал выгрузку в excel. такой вопрос. можно ли оформить строки таким образом, чтобы они были раскрывающимися?
+ нажал - открылись и тд.
сам в экселе не разбираюсь, но задачу поставили. ищу данные, возможно ли это вообще

Google

Sergey
20.02.2018
11:39:59
при клике ?
или это запроган сам в excel-е модуль, плагин и проч?

Sergey
20.02.2018
11:42:36
"excel collapse rows"

Sergey
20.02.2018
11:43:59

Anton
20.02.2018
12:20:10

Sergey
20.02.2018
12:20:44
да, благодарю. нашёл уже такое! надо попробовать

Anton
20.02.2018
12:21:09
Недавно пришлось столкнуться вновь с PHPExcel, а эта зараза не выгружается композером, оказывается умер на гитхабе, пришлось наследником пользоваться

Roman ?
20.02.2018
12:21:56
он вроде грузит но помечает что оно депрекейтед

Anton
20.02.2018
12:22:53
PHPExcel last version, 1.8.1, was released in 2015. The project is no longer maintained and should not be used anymore.
All users should migrate to its direct successor PhpSpreadsheet, or another alternative.
In a few months, the GitHub project will be marked as archived, so everything will be read-only.
у меня уже не грузил) хотя мб композером нормально пользоваться не умею

Google

Samat
20.02.2018
12:46:27
какой есть наиэффективнейший способ сравнить 2 массива и убрать из первого те элементы, которые совпадают с элементами второго по двум свойствам

Dmitry
20.02.2018
12:48:21
в пхп нет типа данных "элемент"

Samat
20.02.2018
12:48:56
это объекты. в массиве. значит, элементы массива

Dmitry
20.02.2018
12:49:37
никто кроме тебя об этом не знает
array_filter

Борис
20.02.2018
12:50:33
Могу ошибится, но зависит от кол-во элементов. Если их мало (100) то полным перебором норм (1000 операций не кросс для сабаки). Если дохера, то нужно построить временный индекс. Например, для каждого массива перестроить массивы так, чтобы индекс был вида $field_one.$field_two, а затем сравнить по этим ключам - будет многократно быстрее.

Samat
20.02.2018
12:51:14
в каждом от 100 до 300 элементов

Dmitry
20.02.2018
12:51:15
а индекс строить ты будешь не полным перебором? ;))

Борис
20.02.2018
12:53:41
а индекс строить ты будешь не полным перебором? ;))
У тебя 2 массива N и M элементов. Построить индекс N+M операций (допустим конкатенация полей) конкатенации полей. Потом N*M операций обращения к array по ключу (что будет происходить через встроенный hashmap)
Полный перебор:
Тупо N*M операций сравнения вида $a->field_1 == $a->field_1 && $a->field2 == $b->field2
А если значения в полях не строки, а какие малые INT то можно вообще норм числовой индекс замутить.... ляпота получится

Dmitry
20.02.2018
12:56:41
ну да, только зачем по второму то индекс... по первому индекс, по второму просто перебор с поиском по индексу

Anton
20.02.2018
12:59:27
Кто-нибудь сталкивался с необходимостью сервера свои распологать на третьих серверах НЕ выдающих инфу властям РФ? нет, товарищ майор, мы не продаём оружие\наркоту\людей
которые можно будет оплачивать не отслеживаемым образом ? не знаю, битками мб)

Ihor
20.02.2018
13:02:30
если уж очень нужно, любой абузоустойчивый

Борис
20.02.2018
13:05:55
ну да, только зачем по второму то индекс... по первому индекс, по второму просто перебор с поиском по индексу
Смысл "самопальных" индексов в том, чтобы их сравнивать. значение в индексе - работает как хеш объекта для конкретной задачи - однозначно утверждающий, что объекты одинаковые, для одинаковых полей (в данном случае два поля).
Поэтому нужны два индекса для двух массивов. array хранит значения в куче, а хешмапу в выделенном массиве, поэтому перебор ключей массива (и сравнение) должен быть многократно быстрее перебора объектов и выборки 2х полей (и сравнение).


Dmitry
20.02.2018
13:07:18
с чего бы перебор хешей значительно быстрее перебора значений? ;)) а свойства - это тот же хешмап
тем более что у тебя нет "перебора хешей", у тебя есть только перебор значений вприори в языке... и все, что ты предлагаешь - заменить один цикл с выборкой двух ключей из хешмапа (получение двух ствойств из объекта) + поиск в индексе первого массива - на два цикла - первый с получением свойств (построение индекса) и второй - получение ключа массива для поиска в первом массиве

Борис
20.02.2018
13:12:17

Alexander
20.02.2018
13:12:42

Борис
20.02.2018
13:12:54

Google

Борис
20.02.2018
13:15:36

Alexander
20.02.2018
13:16:50
ну внутренними методами это должно происходить ощутимо быстрее
без построения индекса придется перебор на пхп писать, а это должно работать медленнее

Dmitry
20.02.2018
13:18:43
плять, еще раз, для постоения индекса тебе нужно сделать перебор

Alexander
20.02.2018
13:18:47
если мне нужно по большому массиву поискать и память позволяет, я вообще стараюсь BST использовать

Борис
20.02.2018
13:36:20
плять, еще раз, для постоения индекса тебе нужно сделать перебор
Не кипи, просто прочитай спокойно и внимательное, или уточни, с чем не согласен. Верно полный перебор, но переборы бывают разные,
Мой вариант: N+M раз конкатенации плюс N*M быстрых операций сравнения.
Вариант просто array_filter через $a->f1 === $b->f1 && $a->f2 == $b->f2 это N*M медленных операций.
При значимом N и M первый вариант быстрее, при малом - второй

Herman
20.02.2018
14:05:07

Alexander
20.02.2018
14:05:51
задача была убрать из первого массива все элементы, которые есть во втором
ну и соответственно, совпадения по двум полям проверять

Herman
20.02.2018
14:07:18
Ну если построить индекс по второму массиву, а первый просто перебирать то проблем нет вроде бы

Борис
20.02.2018
14:10:28
Короче это было просто FYI , пусть топикстартер решает надо ему или нет заморачиваться.

Dmitry
20.02.2018
14:31:19

Борис
20.02.2018
14:35:26

Dmitry
20.02.2018
14:36:36
N - цикл для построения индекса первого массива, M - цикл по второму массиву со поиском по индексу первого... все... зачем индекс по второму массиву я не понимаю

Alexander
20.02.2018
14:39:32
N + M * N получается всё равно, ессли считать поиск перебором (хоть и внутренним). я так понимаю вот это M * N Сергей и подразумевал
ну а так да, второй индекс не нужен, я вовсе то сообщение упустил)

Борис
20.02.2018
14:45:11

Dmitry
20.02.2018
14:46:09
там не внутренний перебор, там хешмап + перебор по коллизиям
isset($index[$object->a . $object->b])

Google

Борис
20.02.2018
14:56:49
? черт, я почему-то был уверен, что топикстартеру нужно и для одного и для второго массива это сделать. Ок, я просто решал другую задачу


Alexander
20.02.2018
15:03:48
забавные заметки https://stackoverflow.com/questions/2473989/list-of-big-o-for-php-functions/2484455#2484455
Lookups:
array_key_exists O(n) but really close to O(1) - this is because of linear polling in collisions, but because the chance of collisions is very small, the coefficient is also very small. I find you treat hash lookups as O(1) to give a more realistic big-O. For example the different between N=1000 and N=100000 is only about 50% slow down.
isset( $array[$index] ) O(n) but really close to O(1) - it uses the same lookup as array_key_exists. Since it's language construct, will cache the lookup if the key is hardcoded, resulting in speed up in cases where the same key is used repeatedly.
in_array O(n) - this is because it does a linear search though the array until it finds the value.
array_search O(n) - it uses the same core function as in_array but returns value.
правда инфа уже старовата походу


Dmitry
20.02.2018
15:06:53
да не, все так и остается, O(1) но худший случай O(n) - на это даже атаки есть, никак еще не пофиксенные в пхп

Jack
20.02.2018
15:41:26
Привет, кто-то знает либу для поиска по массиву? К примеру - хочу одним "регекспом" вытянуть название региона https://pastebin.com/n6HCcb2U
Ну всмысле, надо потянуть шорт нейм, где в тайпсах administrative_area_level_1
что-то типо xpath только по массивам

Vlad
20.02.2018
15:54:31
json decode + foreach
Найс либка?

Jack
20.02.2018
15:55:47
ну такое
уже проще енкодить в xml и юзать xpath

Vlad
20.02.2018
15:58:02
Енкодируй в хтмл
И парси домкравлером
Или нодой например
Тоже вариант

Konstantin
20.02.2018
17:56:28
народ как в сниппет modx revo передать параметр ?
[[!course? &price=[[+price]]]] — уже не пашет такой вариант ?

Arthur
20.02.2018
19:09:12

Konstantin
20.02.2018
19:09:41
да, немного разобрался в проблеме

Eugene
20.02.2018
19:10:27
Это пхп ?
это синтаксис шаблонизатора у них такой

Google

Konstantin
20.02.2018
19:10:32
что то строка неправильная, вардамп выдал на цифры стринг и почему то длина 10
http://shot.hsdn.org/ncWdb8Ad
а мне надо флоат из этого получить чтобы округлять

Arthur
20.02.2018
19:11:39

Konstantin
20.02.2018
19:13:14

Bohdan
20.02.2018
19:16:36
удобно это с twig

Arthur
20.02.2018
19:23:53

Борис
20.02.2018
20:08:09

Aztwin LK
21.02.2018
06:09:45
Здрям ребзи! Кто юзал google api и yandex api для построения дорожных маршрутов?

Ihor
21.02.2018
06:22:38
я Гугл юзал

Anton
21.02.2018
09:25:33
Google maps api лучше
У Yandex более урезанное

Bohdan
21.02.2018
09:41:06
ребята
а в php ведь нет пропуска аргументов?
по типу того, как в go

Maksim
21.02.2018
09:43:15
хотели, но чёт не сраслось

Bohdan
21.02.2018
09:44:11
печаль
а то phpcs ругается на неиспользуемый первый аргумент в коллбеке для exists