Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 Аватар для HotReboot
326 / 227 / 92
Регистрация: 22.04.2017
Сообщений: 1,136
MySQL

Формирования массива

19.06.2022, 04:31. Показов 442. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Совсем никак не соображу. Чувствую, что дело лёгкое и просто я чайник. Есть база с товарами. Некоторые товары имеет варианты. Они записаны под одинаковым артикулом (sku). Для записи по API формируется многомерный массив
Пример массива
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[0] => Array
    (
        [title_variant] => Черный с белым 40
        [price] => 1254.00
        [color] => Черный с белым
        [size] => 40
    )
 
[1] => Array
    (
        [title_variant] => Черный с белым 44
        [price] => 1254.00
        [color] => Черный с белым
        [size] => 44
    )
 
[2] => Array
    (
        [title_variant] => Черный с белым 42
        [price] => 1254.00
        [color] => Черный с белым
        [size] => 42
    )

И вот я уперся как отдать функции этот массив с последней строкой из базы с этим sku.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
foreach ($pdo_con->query($sql) as $row) {
  $v = 0;
  if ($row->sku === $tmp_id){
    $variants[$v] = [
     .....
    ];
    $v++;
    continue;
  }else{
    $variants[$v] = [
     .....
    ];
  }
  call_funct($row, $variants);
  $tmp_id = $row->sku;
}
Естественно не правильный, так как в $row уже следующая запись.

P.S. Базу отдельным запросом "... where sku = $row->sku" не хотелось бы грузить.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.06.2022, 04:31
Ответы с готовыми решениями:

Дата формирования отчета
Имеется запрос: SELECT `niveau_hierar` as Тип, year(`create_date`)as Год, count(*)as 'Количество записей' FROM `notices` ...

Алгоритм для формирования массива с паролями
Нужна функция в которую отправляется 2 параметра: длина пароля и массив с символами для формирования пароля. На выходе мне нужен...

Формирования линка пхп
Привет, скажите как сделать такое есть блок линков вида, они не активные просто выводятся как текст на странице, как мне средствами...

10
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
19.06.2022, 06:34
Оно?
https://stackoverflow.com/ques... roup-mysql

Добавлено через 3 минуты
Если же решать на стороне PHP -- то к массиву всех записей надо применить array_column
Но лучше из базы вытягивать только нужные.
0
 Аватар для HotReboot
326 / 227 / 92
Регистрация: 22.04.2017
Сообщений: 1,136
19.06.2022, 07:36  [ТС]
Para bellum, 1. Нет. Группировка вернёт мне из множества строк только одну - последнею или первую запись, но не n записей.
2. Видимо я плохо объяснил.
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
19.06.2022, 09:34
Ладно. А в $variants что? Просто значения из $row?
Если да, то я не очень понимаю, зачем одна строка должна быть передана отдельно от остальных, которые в $variants.
0
 Аватар для HotReboot
326 / 227 / 92
Регистрация: 22.04.2017
Сообщений: 1,136
19.06.2022, 10:03  [ТС]
Para bellum, В том и дело, что не одна строка. Вот в базе, например.
Чайник 1234 1л Черный
Чайник 1234 2л Черный
Чайник 1234 1л Белый.
Это один товар с артикулом 1234 и тремя вариантами. Поэтому row уходит для записи как Чайник с артикулом 1234, а к нему массив с вариантами.
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
19.06.2022, 11:25
Так?
PHP
1
2
3
4
5
6
7
8
9
10
11
$sth = $pdo_con->query($sql);
 
$products = [];
 
while ($row = $sth->fetch(PDO::FETCH_ASSOC)) {
    $products[$row->sku][] = $row;
}
 
foreach ($products as $article => $pack) {
    call_funct($article, $pack);
}
Добавлено через 2 минуты
Вместо присвоения всего массива $row тут:
PHP
1
$products[$row->sku][] = $row;
естественно, нужно перечислить только необходимые поля, я просто для краткости так написал.
0
 Аватар для HotReboot
326 / 227 / 92
Регистрация: 22.04.2017
Сообщений: 1,136
19.06.2022, 15:59  [ТС]
Para bellum, База из ~20000. Есть товары по одному варианту, есть по 5. Нужно по ней всей пройтись.
0
113 / 115 / 19
Регистрация: 03.06.2022
Сообщений: 756
19.06.2022, 16:43
>Для записи по API формируется многомерный массив

Что такое "запись по API"?
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
19.06.2022, 18:58
HotReboot, самый простой вариант: вытяните отдельным запросом все артикулы и потом получайте данные из таблицы товаров частями. Скажем, получаем из массива ранее выбранных артикулов 20 номеров, вытягиваем соответствующие им товары, отправляем по API; затем следующие 20 артикулов и т.д.

Изначальный вопрос-то разрешился, все правильно работает?
0
 Аватар для HotReboot
326 / 227 / 92
Регистрация: 22.04.2017
Сообщений: 1,136
20.06.2022, 00:06  [ТС]
Para bellum, Так изначально суть была в минимальном использование запросов. Первоначально был запрос с группировкой, а потом запрос с фильтром по id. Но вот хотелось бы только php обойтись.
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
20.06.2022, 05:30
Изначально у вас не получалось передать артикул со всеми относящимися к нему товарами, как бы.
Что до этого:
SQL
1
... WHERE sku = $row->sku
то при выше мной предложенном варианте намного меньше запросов будет, чем в этом вашем гипотетическом запросе.
Цитата Сообщение от HotReboot Посмотреть сообщение
Но вот хотелось бы только php обойтись.
Вытягивайте все 20 000 товаров сразу, значит. ОЗУ может и потянет. Но нет в этом смысла, лучше пачками, как я сказал.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.06.2022, 05:30
Помогаю со студенческими работами здесь

Алгоритм для формирования нового одномерного массива из элементов заданного массива
Cоставить алгоритм для формирование нового одномерного массива из элементов заданного массива.

Использование символа из одного массива в формуле для формирования другого массива
#include <stdio.h> #include <stdlib.h> int main() { int n; printf("Введите n: "); scanf("%f",...

Функция формирования случайного массива и функцию вывода массива на консоль
Написать функция формирования случайного массива и функцию вывода масива на консоль. Числовые характеристики:средние арифметические...

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

Составить программу формирования массива A(N) из двух массивов B(M) и C(K), таким образом, чтобы элементы массива A(N)
распологались по убыванию помогите пожалуйста


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru