Ребята всем привет И так начнем. Имеется Viber бот на PHP который отправляет пользователю клавиатуру с категориями товаров и в зависимости от выбранной категории отправляю пользователю карточки товара в карусели. Проблема заключается в следующем. Массив который создается и вытягивает данные из БД не работает по какой-то причине и карусель не приходит, а вот штучно созданый массив работает отлично. Массив который работает: PHP: $data['rich_media']['Type'] = 'rich_media'; $data['rich_media']['ButtonsGroupColumns'] = 6; $data['rich_media']['ButtonsGroupRows'] = 7; $data['rich_media']['BgColor'] = '#FFFFFF'; $data['rich_media']['Buttons'][0]['Columns'] = 6; $data['rich_media']['Buttons'][0]['Rows'] = 4; $data['rich_media']['Buttons'][0]['ActionType'] = 'reply'; $data['rich_media']['Buttons'][0]['ActionBody'] = 'imageOpen5556'; $data['rich_media']['Buttons'][0]['Image'] = 'http://mydomen.com.ua/image/cache/data/S5050045-500x500.jpg'; $data['rich_media']['Buttons'][1]['Columns'] = 6; $data['rich_media']['Buttons'][1]['Rows'] = 1; $data['rich_media']['Buttons'][1]['ActionType'] = 'none'; $data['rich_media']['Buttons'][1]['ActionBody'] = 'description5555'; $data['rich_media']['Buttons'][1]['Text'] = '<font color=#323232><b>Сережки для дівчат</b></font>'; $data['rich_media']['Buttons'][1]['TextSize'] = 'medium'; $data['rich_media']['Buttons'][1]['TextVAlign'] = 'middle'; $data['rich_media']['Buttons'][1]['TextHAlign'] = 'center'; $data['rich_media']['Buttons'][2]['Columns'] = 6; $data['rich_media']['Buttons'][2]['Rows'] = 1; $data['rich_media']['Buttons'][2]['Text'] = '<font color=#c0392b size=16><b>150.00 грн</b></font>'; $data['rich_media']['Buttons'][2]['ActionType'] = 'none'; $data['rich_media']['Buttons'][2]['ActionBody'] = 'imageOpen'; $data['rich_media']['Buttons'][2]['TextSize'] = 'regular'; $data['rich_media']['Buttons'][2]['TextVAlign'] = 'middle'; $data['rich_media']['Buttons'][2]['TextHAlign'] = 'center'; $data['rich_media']['Buttons'][3]['Columns'] = 6; $data['rich_media']['Buttons'][3]['Rows'] = 1; $data['rich_media']['Buttons'][3]['ActionType'] = 'reply'; $data['rich_media']['Buttons'][3]['ActionBody'] = 'buy3682'; $data['rich_media']['Buttons'][3]['Text'] = '<font color=#ffffff>Купити</font>'; $data['rich_media']['Buttons'][3]['TextSize'] = 'large'; $data['rich_media']['Buttons'][3]['TextVAlign'] = 'middle'; $data['rich_media']['Buttons'][3]['TextHAlign'] = 'middle'; $data['rich_media']['Buttons'][3]['BgColor'] = '#27ae60'; Теперь создаю этот же массив но вытягивают данные из БД для автоматизации работы: PHP: function oneCategory($connect, $category){ $oneCategory = $connect->query("SELECT * FROM product WHERE category=".$category." AND active=1"); return $oneCategory; } function rich_mediaArray($connect){ $rich_mediaArray = $connect->query("SELECT * FROM rich_media"); return $rich_mediaArray; } function rich_media($category){ global $connect; $categoryArray = oneCategory($connect, $category); $rich_mediaArray = rich_mediaArray($connect); $rich_media = []; $rich_media['Type'] = 'rich_media'; $rich_media['ButtonsGroupColumns'] = '6'; $rich_media['ButtonsGroupRows'] = '7'; $rich_media['BgColor'] = '#FFFFFF'; for($i=0; $i<$categoryArray->num_rows; $i++){ foreach($testt = $categoryArray->fetch_assoc() as $key => $value){ for($a=0; $a<$rich_mediaArray->num_rows; $a++){ foreach($rich_mediaArray->fetch_assoc() as $key2 => $value2){ if($key2 != 'id' && $value2 != 'false'){ $rich_media['Buttons'][$a][$key2] = $value2; if($key2 == 'Image'){ $rich_media['Buttons'][$a][$key2] = $testt['image']; } } } } } } return $rich_media; } Запускаю функцию создания массива: PHP: $data['rich_media'] = rich_media('earrings'); И вуаля. Карусель не приходит. Массив проверил через var_dump() заполняется он правильно, а вот в чем проблема не пойму. Вот массив который не работает. PHP: array(1) { ["rich_mediaa"]=> array(5) { ["Type"]=> string(10) "rich_media" ["ButtonsGroupColumns"]=> string(1) "6" ["ButtonsGroupRows"]=> string(1) "7" ["BgColor"]=> string(7) "#FFFFFF" ["Buttons"]=> array(4) { [0]=> array(5) { ["Columns"]=> string(1) "6" ["Rows"]=> string(1) "4" ["ActionType"]=> string(5) "reply" ["ActionBody"]=> string(13) "imageOpen5556" ["Image"]=> string(62) "http://mydomen.com.ua/image/cache/data/S5050045-500x500.jpg" } [1]=> array(8) { ["Columns"]=> string(1) "6" ["Rows"]=> string(1) "1" ["ActionType"]=> string(4) "none" ["ActionBody"]=> string(15) "description5555" ["Text"]=> string(68) "<font color=#323232><b>Сережки для дівчат</b></font>" ["TextSize"]=> string(6) "medium" ["TextVAlign"]=> string(6) "middle" ["TextHAlign"]=> string(6) "center" } [2]=> array(8) { ["Columns"]=> string(1) "6" ["Rows"]=> string(1) "1" ["ActionType"]=> string(4) "none" ["ActionBody"]=> string(9) "imageOpen" ["Text"]=> string(55) "<font color=#c0392b size=16><b>150.00 грн</b></font>" ["TextSize"]=> string(7) "regular" ["TextVAlign"]=> string(6) "middle" ["TextHAlign"]=> string(6) "center" } [3]=> array(9) { ["Columns"]=> string(1) "6" ["Rows"]=> string(1) "1" ["ActionType"]=> string(5) "reply" ["ActionBody"]=> string(6) "buy765" ["Text"]=> string(39) "<font color=#ffffff>Купити</font>" ["TextSize"]=> string(5) "large" ["TextVAlign"]=> string(6) "middle" ["TextHAlign"]=> string(6) "middle" ["BgColor"]=> string(7) "#27ae60" } } } } Уже башка не варит. В чем проблема?
дамп двух таблиц со значениями + какой должен быть результат данных в студию --- Добавлено --- У тебя лапша в коде. Если не ошибаюсь - 1 строкой это все делается
Вот так должно быть PHP: $data['rich_media']['Type'] = 'rich_media'; $data['rich_media']['ButtonsGroupColumns'] = 6; $data['rich_media']['ButtonsGroupRows'] = 7; $data['rich_media']['BgColor'] = '#FFFFFF'; $data['rich_media']['Buttons'][0]['Columns'] = 6; $data['rich_media']['Buttons'][0]['Rows'] = 4; $data['rich_media']['Buttons'][0]['ActionType'] = 'reply'; $data['rich_media']['Buttons'][0]['ActionBody'] = 'imageOpen5556'; $data['rich_media']['Buttons'][0]['Image'] = 'http://mydomen.com.ua/image/cache/data/S5050045-500x500.jpg'; $data['rich_media']['Buttons'][1]['Columns'] = 6; $data['rich_media']['Buttons'][1]['Rows'] = 1; $data['rich_media']['Buttons'][1]['ActionType'] = 'none'; $data['rich_media']['Buttons'][1]['ActionBody'] = 'description5555'; $data['rich_media']['Buttons'][1]['Text'] = '<font color=#323232><b>Сережки для дівчат</b></font>'; $data['rich_media']['Buttons'][1]['TextSize'] = 'medium'; $data['rich_media']['Buttons'][1]['TextVAlign'] = 'middle'; $data['rich_media']['Buttons'][1]['TextHAlign'] = 'center'; $data['rich_media']['Buttons'][2]['Columns'] = 6; $data['rich_media']['Buttons'][2]['Rows'] = 1; $data['rich_media']['Buttons'][2]['Text'] = '<font color=#c0392b size=16><b>150.00 грн</b></font>'; $data['rich_media']['Buttons'][2]['ActionType'] = 'none'; $data['rich_media']['Buttons'][2]['ActionBody'] = 'imageOpen'; $data['rich_media']['Buttons'][2]['TextSize'] = 'regular'; $data['rich_media']['Buttons'][2]['TextVAlign'] = 'middle'; $data['rich_media']['Buttons'][2]['TextHAlign'] = 'center'; $data['rich_media']['Buttons'][3]['Columns'] = 6; $data['rich_media']['Buttons'][3]['Rows'] = 1; $data['rich_media']['Buttons'][3]['ActionType'] = 'reply'; $data['rich_media']['Buttons'][3]['ActionBody'] = 'buy3682'; $data['rich_media']['Buttons'][3]['Text'] = '<font color=#ffffff>Купити</font>'; $data['rich_media']['Buttons'][3]['TextSize'] = 'large'; $data['rich_media']['Buttons'][3]['TextVAlign'] = 'middle'; $data['rich_media']['Buttons'][3]['TextHAlign'] = 'middle'; $data['rich_media']['Buttons'][3]['BgColor'] = '#27ae60'; А вот такое показывает var_dump() PHP: array(1) { ["rich_mediaa"]=> array(5) { ["Type"]=> string(10) "rich_media" ["ButtonsGroupColumns"]=> string(1) "6" ["ButtonsGroupRows"]=> string(1) "7" ["BgColor"]=> string(7) "#FFFFFF" ["Buttons"]=> array(4) { [0]=> array(5) { ["Columns"]=> string(1) "6" ["Rows"]=> string(1) "4" ["ActionType"]=> string(5) "reply" ["ActionBody"]=> string(13) "imageOpen5556" ["Image"]=> string(62) "http://mydomen.com.ua/image/cache/data/S5050045-500x500.jpg" } [1]=> array(8) { ["Columns"]=> string(1) "6" ["Rows"]=> string(1) "1" ["ActionType"]=> string(4) "none" ["ActionBody"]=> string(15) "description5555" ["Text"]=> string(68) "<font color=#323232><b>Сережки для дівчат</b></font>" ["TextSize"]=> string(6) "medium" ["TextVAlign"]=> string(6) "middle" ["TextHAlign"]=> string(6) "center" } [2]=> array(8) { ["Columns"]=> string(1) "6" ["Rows"]=> string(1) "1" ["ActionType"]=> string(4) "none" ["ActionBody"]=> string(9) "imageOpen" ["Text"]=> string(55) "<font color=#c0392b size=16><b>150.00 грн</b></font>" ["TextSize"]=> string(7) "regular" ["TextVAlign"]=> string(6) "middle" ["TextHAlign"]=> string(6) "center" } [3]=> array(9) { ["Columns"]=> string(1) "6" ["Rows"]=> string(1) "1" ["ActionType"]=> string(5) "reply" ["ActionBody"]=> string(6) "buy765" ["Text"]=> string(39) "<font color=#ffffff>Купити</font>" ["TextSize"]=> string(5) "large" ["TextVAlign"]=> string(6) "middle" ["TextHAlign"]=> string(6) "middle" ["BgColor"]=> string(7) "#27ae60" } } } } --- Добавлено --- В том то и дело что массив то я распечатал он доступен выше и не нашел отличия которые могут повлиять на работу карусели
В конечном массиве некоторые данные поменяны местами но значения присваиваются правильно и формат выводимой строки что также не есть критичным (проверено на работающем массиве) Конечный массив с данными. Здесь они могут стоять в произвольном порядке. Формат значений в полях "Columns" u "Rows" выводится как string вместо int PHP: [0]=> array(5) { ["Columns"]=> string(1) "6" ["Rows"]=> string(1) "4" ["ActionType"]=> string(5) "reply" ["ActionBody"]=> string(13) "imageOpen5556" ["Image"]=> string(62) "http://mydomen.com.ua/image/cache/data/S5050045-500x500.jpg" }
Да за это знаю это просто добавил букву чтобы вывести вардамп в двух разных массивах на одной странице. В оригинале лишней буквы в этом месте нету
ActionBody отправляет значение из Вайбера на сервер, поэтому отношения к выводу карусели не имеет, там может быть записано все что угодно что мы хотим передать в код --- Добавлено --- Двух таблиц из Базы или двух массивов? Если массивов то они есть выше
Ещё попробуй в массиве, созданном "вручную" вместо цифр написать строки (то есть, не $data['rich_media']['ButtonsGroupColumns']=6;, а $data['rich_media']['ButtonsGroupColumns']='6' И проверь снова "...на массиве что вручную делал"
Таблица product https://ibb.co/ZLR8NxL Таблица rich_media https://ibb.co/pXqx81f Сомневаюсь конечно что это поможет так как сейчас данные из БД есть в массиве который я присылал ранее
Тогда ищи разницу в методах отправки "ручного" массива и сформированного функцией --- Добавлено --- И смотри ответ от viber api