Работа с json_decode/json_encode.Сохранение массивов в БД.

Есть вот такой массив

Нужен доступ к элементу customer, который есть json

Использую код

$prs =  json_decode($parameters['customer'],true);

Делаю правки коррективы,какие мне надо

$prs['customFields']['promocode'] = $prs['customFields']['kupon'];
unset($prs['customFields']['kupon']);
$parameters['customer'] = json_encode($prs);

Продолжение другой случай

Получили вот такой stdClass Object

Array ( [0] => stdClass Object ( [date] => 1552484113 [from_id] => 100542244 [id] => 1 [out] => 0 [peer_id] => 100542244 [text] => Это тестовое сообщение, чтобы выполнить тестовое задание1 [conversation_message_id] => 1 [fwd_messages] => Array ( ) [important] => [random_id] => 0 [attachments] => Array ( ) [is_hidden] => ) [1] => stdClass Object ( [date] => 1552484731 [from_id] => -102041217 [id] => 2 [out] => 1 [peer_id] => 100542244 [text] => Спасибо, что написали нам [conversation_message_id] => 2 [fwd_messages] => Array ( ) [important] => [random_id] => 929026351 [attachments] => Array ( ) [admin_author_id] => 100542244 [is_hidden] => ) [2] => stdClass Object ( [date] => 1552484883 [from_id] => 100542244 [id] => 3 [out] => 0 [peer_id] => 100542244 [text] => Второе сообщение для выполения тестового задания [conversation_message_id] => 3 [fwd_messages] => Array ( ) [important] => [random_id] => 0 [attachments] => Array ( ) [is_hidden] => ) [3] => stdClass Object ( [date] => 1552484905 [from_id] => 100542244 [id] => 4 [out] => 0 [peer_id] => 100542244 [text] => Третье сообщение для выполения тестового задания [conversation_message_id] => 4 [fwd_messages] => Array ( ) [important] => [random_id] => 0 [attachments] => Array ( ) [is_hidden] => ) [4] => stdClass Object ( [date] => 1552484920 [from_id] => 100542244 [id] => 5 [out] => 0 [peer_id] => 100542244 [text] => Четвертое сообщение для выполнения тестового задания [conversation_message_id] => 5 [fwd_messages] => Array ( ) [important] => [random_id] => 0 [attachments] => Array ( ) [is_hidden] => ) [5] => stdClass Object ( [date] => 1552484931 [from_id] => 100542244 [id] => 6 [out] => 0 [peer_id] => 100542244 [text] => Пятое сообщение для выполнения тестового задания [conversation_message_id] => 6 [fwd_messages] => Array ( ) [important] => [random_id] => 0 [attachments] => Array ( ) [is_hidden] => ) [6] => stdClass Object ( [date] => 1552484938 [from_id] => 100542244 [id] => 7 [out] => 0 [peer_id] => 100542244 [text] => 6 сообщение для выполнения тестового задания [conversation_message_id] => 7 [fwd_messages] => Array ( ) [important] => [random_id] => 0 [attachments] => Array ( ) [is_hidden] => ) [7] => stdClass Object ( [date] => 1552484944 [from_id] => 100542244 [id] => 8 [out] => 0 [peer_id] => 100542244 [text] => 7 сообщение для выполнения тестового задания [conversation_message_id] => 8 [fwd_messages] => Array ( ) [important] => [random_id] => 0 [attachments] => Array ( ) [is_hidden] => ) [8] => stdClass Object ( [date] => 1552484952 [from_id] => 100542244 [id] => 9 [out] => 0 [peer_id] => 100542244 [text] => 8 сообщение для выполнения тестового задания [conversation_message_id] => 9 [fwd_messages] => Array ( ) [important] => [random_id] => 0 [attachments] => Array ( ) [is_hidden] => ) [9] => stdClass Object ( [date] => 1552484959 [from_id] => 100542244 [id] => 10 [out] => 0 [peer_id] => 100542244 [text] => 9 сообщение для выполнения тестового задания [conversation_message_id] => 10 [fwd_messages] => Array ( ) [important] => [random_id] => 0 [attachments] => Array ( ) [is_hidden] => ) [10] => stdClass Object ( [date] => 1552484967 [from_id] => 100542244 [id] => 11 [out] => 0 [peer_id] => 100542244 [text] => 10 сообщение для выполнения тестового задания [conversation_message_id] => 11 [fwd_messages] => Array ( ) [important] => [random_id] => 0 [attachments] => Array ( ) [is_hidden] => ) [11] => stdClass Object ( [date] => 1552485703 [from_id] => -102041217 [id] => 12 [out] => 1 [peer_id] => 100542244 [text] => запрос принят [conversation_message_id] => 12 [fwd_messages] => Array ( ) [important] => [random_id] => 1916962769 [attachments] => Array ( ) [admin_author_id] => 100542244 [is_hidden] => ) )

Преобразуем в массив php

$massiv = json_decode($query);
print_r($massiv->{‘response’}->{‘items’});

Если нужно перебрать элементы массива items
foreach ($massiv->{‘response’}->{‘items’} as $key => $value) {
echo $value->{‘from_id’};
}

Если нужно извлечь отдельный элемент по индексу

echo $massiv->{‘response’}->items[1]->date

Чтобы упростить синтаксис и оперировать результатом
json_decode как обычным php -массивов, нужно изначально использовать функцию get_object_vars() для всех stdClass Object. Например,

$results=json_decode($query);
$first = get_object_vars($results[0]);
$all=array();
foreach($results as $result)
 $all[]=get_object_vars($result);
echo $all[15]['conversation_message_id'];

Второй способ просто использовать

json_decode(json_encode($results),true);

Как в БД хранить массивы

Наполняем массив

$save=array('offer'=>
		array('tender_position'=>'1',
			  'offer_number'=>'2',
			  'company'=>'3',
			  'postavki'=>'4',
			  'opis'=>'5',
			  'proname'=>'6',
			  'proamount'=>'7',
			  'proprice'=>'8',
			  'prosumma'=>'9',
			  'prosummapdv'=>'10',
			  'prototal'=>'11',
			  'country'=>'12',
			  'manufacturer'=>'13',
			  'typepayment'=>'14',
	  		  'toda'=>'15.06.2019',   
			  'product'=>
			    array('name'=>'16',
					  'amount'=>'17',
					  'price'=>'18',
					  'total'=>'19',
					  'summa'=>'20',
					  'summapdv'=>'21'),
		)
	);

Преобразуем $save в json-формат и пишем в БД

$filed=json_encode($save);

Получится вот такая запись в поле таблицы БД после выполнения sql-запроса UPDATE/INSERT

{"offer":{"tender_position":"1","offer_number":"2","company":"3","postavki":"4","opis":"5","proname":"6","proamount":"7","proprice":"8","prosumma":"9","prosummapdv":"10","prototal":"11","country":"12","manufacturer":"13","typepayment":"14","product":{"name":"15","amount":"16","price":"17","total":"18","summa":"19","summapdv":"20"},"today":"21"}}

Для сохранение такой записи в БД поле таблицы должно быть типа «Text»

Кодирование кириллицы

Чтобы русские буквы остались без изменения после раскодирования необходимо использовать второй параметр в функции json_encode($document,JSON_UNESCAPED_UNICODE)

Конвертирования массива array в stdclass

‘Вселенная (Universe)’,
‘galaxy’ => ‘Млечный путь (Milky way)’,
‘planetary-system’ => ‘Солнечная система (Solar system)’,
‘planet’ => ‘Земля (Earth)’,
‘continent’ => ‘Европа (Europe)’,
‘country’ => ‘Россия (Russia)’,
‘city’ => ‘Москва (Moscow)’
);

// приводим массив к типу object
$object = (object)$array;

// выводим массив
print_r($object);

В результате получаем

stdClass Object ( [0] => Вселенная (Universe) [galaxy] => Млечный путь (Milky way) [planetary-system] => Солнечная система (Solar system) [planet] => Земля (Earth) [continent] => Европа (Europe) [country] => Россия (Russia) [city] => Москва (Moscow) )

Обращение к членам объекта

galaxy; // Млечный путь (Milky way) echo $object->{«planetary-system»}; // Солнечная система (Solar system) // или так $key = «planetary-system»; echo $object->$key; // Солнечная система (Solar system) $value) { echo $key . ‘: ‘ . $value . ‘
‘; }

Проверить при случае работает ли код преобразования в массив

(array)$term
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии

СТАТЬИ БЛОГА ПО РУБРИКЕ И МЕТКАМ

img

Массивы java

задать одномерный массив int[] series = {4,2}; добавить элемент в массив c помощью series = addElement(series, 3); series = addElement(series, 1); Но это не работает, в Java нужно использовать коллекции для подобного добавления новых элементов […]

Массивы java

задать одномерный массив int[] series = {4,2}; добавить элемент в массив c помощью series = addElement(series, 3); series = addElement(series, 1); Но это не работает, в Java нужно использовать коллекции для подобного добавления новых элементов […]
img

Часто использую в javascript

Работа со строками Поиск позиции вхождения подстроки в строке Расщепить строку на элементы Работа с типами данных Проверить переменная массив — да-нет? Проверить есть ли в переменной что-нибудь или она типа object Работа с массивами […]

Часто использую в javascript

Работа со строками Поиск позиции вхождения подстроки в строке Расщепить строку на элементы Работа с типами данных Проверить переменная массив — да-нет? Проверить есть ли в переменной что-нибудь или она типа object Работа с массивами […]
img

Работа с датами php

date(‘Y-m-d’) — получить сегодняшнюю дату 2019-05-10 strtotime(date(‘Y-m-d’)); // — преобразовать в Unix формат date(‘Y-m-d’, 1552489683) — обратно из Unix в 2019-05-10 конверт в unix-формат и обратно http://i-leon.ru/tools/time Пример $this->data[‘created’] = date(‘Y-m-d H:i’, strtotime($article_info[‘created’]));

Работа с датами php

date(‘Y-m-d’) — получить сегодняшнюю дату 2019-05-10 strtotime(date(‘Y-m-d’)); // — преобразовать в Unix формат date(‘Y-m-d’, 1552489683) — обратно из Unix в 2019-05-10 конверт в unix-формат и обратно http://i-leon.ru/tools/time Пример $this->data[‘created’] = date(‘Y-m-d H:i’, strtotime($article_info[‘created’]));
img

Работа с датами php

date(‘Y-m-d’) — получить сегодняшнюю дату 2019-05-10 strtotime(date(‘Y-m-d’)); // — преобразовать в Unix формат date(‘Y-m-d’, 1552489683) — обратно из Unix в 2019-05-10 конверт в unix-формат и обратно http://i-leon.ru/tools/time Пример $this->data[‘created’] = date(‘Y-m-d H:i’, strtotime($article_info[‘created’]));

Работа с датами php

date(‘Y-m-d’) — получить сегодняшнюю дату 2019-05-10 strtotime(date(‘Y-m-d’)); // — преобразовать в Unix формат date(‘Y-m-d’, 1552489683) — обратно из Unix в 2019-05-10 конверт в unix-формат и обратно http://i-leon.ru/tools/time Пример $this->data[‘created’] = date(‘Y-m-d H:i’, strtotime($article_info[‘created’]));
img

Пространство имен php

Чтобы задать пространство имен если хотим обратиться к классу из другого namespace тогда пишем обязательно вначале ставим косую черту, иначе интерпретатор подумает что это относительная ссылка и выдваст фатальную ошибку, потому что класса не окажется […]

Пространство имен php

Чтобы задать пространство имен если хотим обратиться к классу из другого namespace тогда пишем обязательно вначале ставим косую черту, иначе интерпретатор подумает что это относительная ссылка и выдваст фатальную ошибку, потому что класса не окажется […]
img

Использование php по назначению

Работа с массивами функция count — посчитать размер массива Работа со строками удалить слеш с конца строки. Подсказка https://phpclub.ru/talk/threads/%D0%9F%D0%BE%D0%BC%D0%BE%D0%B3%D0%B8%D1%82%D0%B5-%D0%BE%D1%82%D1%80%D0%B5%D0%B7%D0%B0%D1%82%D1%8C-%D0%BF%D0%BE%D1%81%D0%BB%D0%B5%D0%B4%D0%BD%D0%B8%D0%B9-%D1%8D%D0%BB%D0%B5%D0%BC%D0%B5%D0%BD%D1%82-%D0%BC%D0%B0%D1%81%D1%81%D0%B8%D0%B2%D0%B0.74618/ explode(‘,’,string) — разбить строку с разделителем «,» на массив элементов подробнее о html_entity_decode и htmlentities Работа […]

Использование php по назначению

Работа с массивами функция count — посчитать размер массива Работа со строками удалить слеш с конца строки. Подсказка https://phpclub.ru/talk/threads/%D0%9F%D0%BE%D0%BC%D0%BE%D0%B3%D0%B8%D1%82%D0%B5-%D0%BE%D1%82%D1%80%D0%B5%D0%B7%D0%B0%D1%82%D1%8C-%D0%BF%D0%BE%D1%81%D0%BB%D0%B5%D0%B4%D0%BD%D0%B8%D0%B9-%D1%8D%D0%BB%D0%B5%D0%BC%D0%B5%D0%BD%D1%82-%D0%BC%D0%B0%D1%81%D1%81%D0%B8%D0%B2%D0%B0.74618/ explode(‘,’,string) — разбить строку с разделителем «,» на массив элементов подробнее о html_entity_decode и htmlentities Работа […]
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x