Всем привет! Есть таблица со строкой тип данных longtext. В ячейках этой строки записаны массивы. Код (Text): a:8: { s:3:"sku"; s:13:"Zodiac Indigo"; s:8:"products"; a:3: { i:1;a:3:{s:6:"option";s:13:"Zodiac Indigo";s:5:"price";s:5:"81000";s:9:"saleprice";s:0:"";} i:2;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";} i:3;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";} } s:11:"description"; s:13:"Zodiac Indigo"; s:8:"shiprate"; s:0:""; s:8:"featured" ;s:2:"no"; s:4:"sale"; s:2:"no"; s:10:"cart_radio"; s:1:"1"; s:6:"optset"; s:0:""; } a:8: { s:3:"sku"; s:15:"Jacuzzi Profile"; s:8:"products"; a:40: { i:1;a:3:{s:6:"option";s:44:"Бассейн комплектации BASE";s:5:"price";s:6:"809000";s:9:"saleprice";s:0:"";} i:2;a:3:{s:6:"option";s:43:"Бассейн комплектации TOP";s:5:"price";s:6:"917800";s:9:"saleprice";s:0:"";} i:3;a:3:{s:6:"option";s:23:"Крышка-чехол";s:5:"price";s:5:"38400";s:9:"saleprice";s:0:"";} i:4;a:3:{s:6:"option";s:33:"Утепление Winter Pro Kit";s:5:"price";s:5:"33000";s:9:"saleprice";s:0:"";} i:5;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";} i:6;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";} i:7;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";} i:8;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";} i:9;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";} i:10;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";} i:11;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";} i:12;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";} i:13;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";} i:14;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";} i:15;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";} i:16;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";} i:17;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";} i:18;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";} i:19;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";} i:20;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";} i:21;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";} i:22;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";} i:23;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";} i:24;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";} i:25;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";} i:26;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";} i:27;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";} i:28;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";} i:29;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";} i:30;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";} i:31;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";} i:32;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";} i:33;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";} i:34;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";} i:35;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";} i:36;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";} i:37;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";} i:38;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";} i:39;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";} i:40;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";} } s:11:"description"; s:15:"Jacuzzi Profile"; s:8:"shiprate"; s:0:""; s:8:"featured"; s:2:"no"; s:4:"sale"; s:2:"no"; s:10:"cart_radio"; s:1:"1"; s:6:"optset"; a:1:{i:0;s:1:"2";} } В массиве хоронится информация о название товара и его стоимости. Пример: Код (Text): i:1;a:3:{s:6:"option";s:44:"Бассейн комплектации BASE";s:5:"price";s:6:"809000";s:9:"saleprice";s:0:"";} Вообщем я сейчас застрял в самом начале. У меня есть переменная $d в которую записан этот массив. Как мне извлечь из него список товара и в цикле присвоить к переменным. Например: Код (Text): $option = "Бассейн комплектации BASE"; $price = "809000";
Помогите разобраться в примере... вопросы в комментариях... Код (Text): <?php // Мы используем функцию unserialize() для загрузки сессионных данных в массив // $session_data из строки, извлекаемой из базы данных. // Данный пример дополняет пример, описывающий использование serialize(). $conn = odbc_connect("webdb", "php", "chicken"); // что за зачтения "webdb", "php", "chicken" $stmt = odbc_prepare($conn, "SELECT data FROM sessions WHERE id = ?"); // зачем тут эта переменная $conn и что означает это условие id = ? разве может в id записан знак ? $sqldata = array($_SERVER['PHP_AUTH_USER']); // откуда тут переменная $_SERVER что в ней записано и что за значение PHP_AUTH_USER if (!odbc_execute($stmt, $sqldata) || !odbc_fetch_into($stmt, $tmp)) { // если процедура извлечения данных не удалась, то инициализируем пустой массив $session_data = array(); } else { // сейчас у нас должны быть сериализованные данные в $tmp[0]. $session_data = unserialize($tmp[0]); if (!is_array($session_data)) { // что-то пошло не так, инициализируем пустой массив $session_data = array(); } } ?>
Хм, а что тут непонятного? У тебя есть строка в базе в которой содержится сериализованный массив. Делаешь запрос к базе, вытаскиваешь эту строку, потом через прогоняешь через функцию unserialize и вот у тебя есть обычный массив. А дальше ты уже сам можешь через foreach Или while прогнать его.
Вообщем застрял в самом начале. Вот этот пример работает Код (Text): $text = 'a:1:{s:5:"vadim";a:2:{s:5:"email";s:13:"vadim@mail.ru";s:4:"site";s:12:"www.vadim.ru";}}'; $a = unserialize($text); print_r($a); выводит Array ( [vadim] => Array ( => [email=vadim@mail.ru]vadim@mail.ru [site] => http://www.vadim.ru ) ) А вот этот этот выводит пустоту Код (Text): $text1 = 'a:8:{s:3:"sku";s:15:"Jacuzzi Profile";s:8:"products";a:40:{i:1;a:3:{s:6:"option";s:44:"Бассейн комплектации BASE";s:5:"price";s:6:"809000";s:9:"saleprice";s:0:"";}i:2;a:3:{s:6:"option";s:43:"Бассейн комплектации TOP";s:5:"price";s:6:"917800";s:9:"saleprice";s:0:"";}i:3;a:3:{s:6:"option";s:23:"Крышка-чехол";s:5:"price";s:5:"38400";s:9:"saleprice";s:0:"";}i:4;a:3:{s:6:"option";s:33:"Утепление Winter Pro Kit";s:5:"price";s:5:"33000";s:9:"saleprice";s:0:"";}i:5;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";}i:6;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";}i:7;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";}i:8;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";}i:9;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";}i:10;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";}i:11;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";}i:12;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";}i:13;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";}i:14;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";}i:15;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";}i:16;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";}i:17;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";}i:18;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";}i:19;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";}i:20;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";}i:21;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";}i:22;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";}i:23;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";}i:24;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";}i:25;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";}i:26;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";}i:27;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";}i:28;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";}i:29;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";}i:30;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";}i:31;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";}i:32;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";}i:33;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";}i:34;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";}i:35;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";}i:36;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";}i:37;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";}i:38;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";}i:39;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";}i:40;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";}}s:11:"description";s:15:"Jacuzzi Profile";s:8:"shiprate";s:0:"";s:8:"featured";s:2:"no";s:4:"sale";s:2:"no";s:10:"cart_radio";s:1:"1";s:6:"optset";a:1:{i:0;s:1:"2";}}'; $a1 = unserialize($text1); print_r($a1); Добавлено спустя 54 минуты 16 секунд: Не получается вывести "Zodiac Indigo", Код (Text): $text = 'a:3:{ i:1;a:3:{s:6:"option";s:13:"Zodiac Indigo";s:5:"price";s:5:"81000";s:9:"saleprice";s:0:"";} i:2;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";} i:3;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";} }'; $a = unserialize($text); // print_r($a); echo $a[0]["option"];
там нет ключа 0. Код (PHP): $a1=unserialize($text1); echo'<pre>'; print_r($a1); echo'</pre>'; echo $a1['products'][1]['option'];
данные в этом массиве, насколько я вижу, UTF-8, там встречается русский текст, поэтому это важно! проверь, что файл сохранен в UTF-8, иначе будет ошибка
Файл сохранен в UTF-8 Код (Text): $a1=unserialize($text1); echo'<pre>'; print_r($a1); echo'</pre>'; echo $a1['products'][1]['option']; не работает. Я пробовал удалить содержимое ячейки products все заработало Код (Text): <?php $text1 = 'a:7:{s:3:"sku";s:15:"Jacuzzi Profile";s:11:"description";s:15:"Jacuzzi Profile";s:8:"shiprate";s:0:"";s:8:"featured";s:2:"no";s:4:"sale";s:2:"no";s:10:"cart_radio";s:1:"1";s:6:"optset";a:1:{i:0;s:1:"2";}}'; $a1=unserialize($text1); echo'<pre>'; print_r($a1); echo'</pre>'; echo $a1['sku']; ?> выдал Array ( [sku] => Jacuzzi Profile [description] => Jacuzzi Profile [shiprate] => [featured] => no [sale] => no [cart_radio] => 1 [optset] => Array ( [0] => 2 ) ) Jacuzzi Profile А вот содержимое ячейки не работает products. Код (Text): $text1 = ' a:1:{ s:8:"products";a:4:{ i:1;a:3:{ s:6:"option";s:44:"Бассейн комплектации BASE"; s:5:"price";s:6:"809000"; s:9:"saleprice";s:0:""; } i:2;a:3:{ s:6:"option";s:43:"Бассейн комплектации TOP"; s:5:"price";s:6:"917800"; s:9:"saleprice";s:0:""; } i:3;a:3:{ s:6:"option";s:23:"Крышка-чехол"; s:5:"price";s:5:"38400"; s:9:"saleprice";s:0:""; } i:4;a:3:{ s:6:"option";s:33:"Утепление Winter Pro Kit"; s:5:"price";s:5:"33000"; s:9:"saleprice";s:0:""; } } }'; $a1=unserialize($text1); echo'<pre>'; print_r($a1); echo'</pre>'; echo $a1['products'][1]['option'];
Я так понимаю это какой то магазин, наверное у него уже есть стандартные функции по работе с товарами. Может тогда не надо тебе мучиться с этим массивом, тем более ты не очень понимаешь что делаешь, а почитаешь мануал к магазину?
Сайт на Wordpress плагин магазина eShop. Но все эти заморочки для мне нужны для другого скрипта. Добавлено спустя 46 секунд: Скиньте пожалуйста файл со скриптом... Добавлено спустя 8 минут 47 секунд: А вот и ошибка s:6:"option";s:44:"Бассейн комплектации BASE"; указано что 44 символа, а на самом деле 25. Видимо он когда их записывал посчитал вместе с пробелами как-то так "Бассейн комплектации BASE " Но как теперь быть? на сайте ведь все функционирует значит есть какой-то способ?