
Дмитрий
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

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

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

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

Igor
04.09.2017
07:05:21

Дмитрий
04.09.2017
07:05:38

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

Adel
04.09.2017
07:06:27

Дмитрий
04.09.2017
07:06:45

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
Ааа