@phpclubru

Страница 324 из 956
Дмитрий
04.09.2017
06:41:18
Все доброе утро! Вопрос: есть массив масивов. Подмассивы ассоциативные. Хочу получить массив, который будет содержать массивы у кторых в определенном ключе будет определенное значение. Есть ли такая функция? Пример: [["id"=>"1","name"=>"Tom"],...] Нужно отсавить только те подмассивы, у которых name=Tom

Andrei
04.09.2017
06:43:28
array_filter(array_filter(...))

Дмитрий
04.09.2017
06:44:56
array_filter(array_filter(...))
Это будет быстрее чем foreach(){in_array()} ?

Andrei
04.09.2017
06:45:38
in_array сама по себе не очень быстрая

Google
Дмитрий
04.09.2017
06:47:04
с другой стороны можно без in_Array.. так как я уже знаю что искать надо в name

Adel
04.09.2017
06:47:33
array_filter( function() {return array_key_exists() && $arr['name'] == 'tom';}

Дмитрий
04.09.2017
06:49:11
in_array сама по себе не очень быстрая
то есть получится: foreach($arr as $k => $a){ if($a["name"] ==="Tom"){ $newArr[] = $arr[$k] } }

array_filter( function() {return array_key_exists() && $arr['name'] == 'tom';}
будет ли так быстрее чем https://t.me/phpclubru/32365

Andrei
04.09.2017
06:50:16
в целом да, но изящнее как написал @Adelf32

Adel
04.09.2017
06:51:15
думаю мое даже будет быстрее, но я не вижу смысла говорить тут о быстроте. ты врядли миллиарды записей перебираешь так.

а если перебираешь - надо переходить в базы данных и там это делать

Дмитрий
04.09.2017
06:51:51
тут получается пара тысяч всего

Andrei
04.09.2017
06:52:21
эмм, может имеет смысл из базы уже выбрать?

Дмитрий
04.09.2017
06:52:44
Andrei
04.09.2017
06:54:21
тогда напиши более красивый код через array_filter - понятнее будет, на такой выборке врядли стоит говорить о оптимальном/быстром не быстром, на уровне погрешности будет

Дмитрий
04.09.2017
07:00:24
тогда напиши более красивый код через array_filter - понятнее будет, на такой выборке врядли стоит говорить о оптимальном/быстром не быстром, на уровне погрешности будет
я бы из базы хотел конечно получить сразу.. но там поле varchar, и нужно по нему группировать... получается что-то типа: SELECT SUM(qt),name,dt FROM users GROUP BY name,dt И запрос работает примерно 16 секунд

Andrei
04.09.2017
07:01:30
поробуйте создать индекс, ну и explain select

Google
Adel
04.09.2017
07:01:55
а какая задача стоит?

Дмитрий
04.09.2017
07:02:05
а какая задача стоит?
Нужно объединить две таблицы. Из users беру группировку по name и dt Из другой беру по name поле cname

Adel
04.09.2017
07:03:35
ух. foreign ключи по строковым полям. круто :)

Дмитрий
04.09.2017
07:04:32
ух. foreign ключи по строковым полям. круто :)
понимаю что плохо.. Есть мысля проставить доп колонку с id и прописать таблицу отдельную

ух. foreign ключи по строковым полям. круто :)
Более глобальная цель - записывать в таблицу 3 данные: dt,cname,qt

Дмитрий
04.09.2017
07:05:38
Много записей в users?
не очень пара миллионов где-то

Igor
04.09.2017
07:06:17
Если вытащишь в отдельную таблицу и сделаешь справочник, то будет быстрее

Adel
04.09.2017
07:06:27
Более глобальная цель - записывать в таблицу 3 данные: dt,cname,qt
для отчетов обычно так и делают. собирают денормализированые данные в таблички.. мы их статистическими называли.. но есть общепринятое название

Adel
04.09.2017
07:07:21
ну если только справочником это не назвать. это немного другое :)

Дмитрий
04.09.2017
07:07:43
ну да, тут главное суть, а не название

Igor
04.09.2017
07:08:13
Это то о чем говорит Игорь?
Ну почти. Адель говорит не о том чтобы вытащить имена в справочник, а сделать отдельную табличку конкретно для одной цели

RSL

Дмитрий
04.09.2017
07:09:53
то есть мои входящие: таблица-1 (users) name,qt,dt таблица-2 (сопоставление) name,cname таблица-3 (новая для заполнения) cname,qt,dt Так как name - varchar, то предлагается сделать справочник по name

Igor
04.09.2017
07:11:11
А насколько свежими должны быть данные?

Дмитрий
04.09.2017
07:12:05
А насколько свежими должны быть данные?
Так как данные статичны (все таблицы заполняются посредством оператора) то данные свижие пока их не обновил оператор

Igor
04.09.2017
07:12:31
Например раз в пять минут можно кроном выгружать результат в файл, в структуре ничо не менять. Да, оно будет работать 16 сек, ну и фиг с ним. Пользователю данные отдавать из файла.

Google
Igor
04.09.2017
07:12:44
Мгновенно, но устаревгие макс на 5 мин

Дмитрий
04.09.2017
07:13:22
не, тут просто эти данные из таблицы-3 будут использоваться дальше в других запросах..

Igor
04.09.2017
07:14:12
Ааа

Страница 324 из 956