есть массив, к примеру Код (Text): [SUPPLIER(1)] => ........................ [SUPPLIER(2)] => ABCR [SUPPLIER(3)] => 4-BROMO-N,N-DIMETHYLANILINE [SUPPLIER(4)] => 586-77-6 [SUPPLIER(5)] => . [SUPPLIER(6)] => PRODUCT LINK: http://www.abcr.de/shop/de/AB112143 [SUPPLIER(7)] => _F AB112143 100 G EUR 112.20 98% [SUPPLIER(8)] => _F AB112143 500 G EUR 177.00 98% [SUPPLIER(9)] => _B AB112143 1 KG EUR 266.50 98% [SUPPLIER(10)] => ........................ [SUPPLIER(11)] => ACC [SUPPLIER(12)] => 4-BROMO-N,N-DIMETHYLANILINE [SUPPLIER(13)] => 586-77-6 [SUPPLIER(14)] => . [SUPPLIER(15)] => PRODUCT LINK: http://www.acccorporation.com/products/HCH0023200 [SUPPLIER(16)] => _F HCH0023200 10 G USD 110.00 [SUPPLIER(17)] => _F HCH0023200 100 G USD 2261.60 [SUPPLIER(18)] => ........................ [SUPPLIER(19)] => ACCELA-CHINA [SUPPLIER(20)] => 4-BROMO-N,N-DIMETHYLANILINE [SUPPLIER(21)] => 586-77-6 [SUPPLIER(22)] => . [SUPPLIER(23)] => GHS HAZARD PHRASE: H302+H312+H332;H315;H319 [SUPPLIER(24)] => GHS PICTOGRAM: EXCLAMATION MARK [SUPPLIER(25)] => GHS PRECAUTIONARY STATEMENT: P280;P305+P351+P338 [SUPPLIER(26)] => GHS SIGNALWORD: WARNING [SUPPLIER(27)] => PRODUCT LINK: http://en.shao-yuan.com/cn/productview_goodsid_30946_good+ [SUPPLIER(28)] => SDS LINK: http://en.shao-yuan.com/cn/msds/SY013736.pdf [SUPPLIER(29)] => _F SY013736 100 G USD 117.65 97+% [SUPPLIER(30)] => _F SY013736 500 G USD 176.47 97+% [SUPPLIER(31)] => ........................ [SUPPLIER(32)] => ACCELACHEM [SUPPLIER(33)] => 4-BROMO-N,N-DIMETHYLANILINE [SUPPLIER(34)] => 586-77-6 [SUPPLIER(35)] => . [SUPPLIER(36)] => GHS HAZARD PHRASE: H302+H312+H332;H315;H319 [SUPPLIER(37)] => GHS PICTOGRAM: EXCLAMATION MARK [SUPPLIER(38)] => GHS PRECAUTIONARY STATEMENT: P280;P305+P351+P338 [SUPPLIER(39)] => GHS SIGNALWORD: WARNING [SUPPLIER(40)] => PRODUCT LINK: http://www.accelachem.com/cn/productview_goodsid_30946_go+ [SUPPLIER(41)] => SDS LINK: http://www.accelachem.com/cn/msds/SY013736.pdf [SUPPLIER(42)] => _F SY013736 100 G USD 100.00 97+% [SUPPLIER(43)] => _F SY013736 500 G USD 150.00 97+% [SUPPLIER(44)] => ........................ как разбить его на подмассивы по разделителю содержащему "......................."? Тоесть получить несколько массивов из элементов находящихся между "........................"
PHP: // $arrayInput - входящий массив $arrayResult = []; // сюда засунем готовый массив $delemiter = '........................'; // это разделитель $i = 0; // это счетчик наших массивов foreach($arrayInput as $key => $val){ if ( $val == $delemiter ) { $i++; } else { $arrayResult[$i][$key]; } } // на выходе получим удобный двумерный массив
написал с ходу. Идея должна быть ясна. Кода мало и всё наглядно. При необходимости - можно модифицировать. А в чем проблема?
Я когда такие гаражи вижу, офигеваю почуть. Сериализацию изобрели тыщщу лет как. Ну нафига... А ты забыл в новый массив писать данные Вглядись в 11 строку внимательнее. В остальном алгоритм рабочий.
Спасибо огромное всем! Код (Text): $arrayResult = []; // сюда засунем готовый массив $delemiter = '........................'; // это разделитель $i = 0; // это счетчик наших массивов foreach($arrayInput as $key => $val){ if ( $val == $delemiter ) { $i++; } else { $arrayResult[$i][$key] = $val; } } // на выходе получим удобный двумерный массив
Ну а что непонятного? Сериализация - это способ хранения структурированных данных в виде последовательности байтов, чаще текста, вне приложения. Чтобы потом можно было эти данные особым образом прочитать и получить структуру для использования в программе. Есть много способов сериализации. Сегодня самый распространенный, пожалуй, это JSON. Поддерживается PHP нативно уже хз сколько лет. При том, что в PHP есть и своя собственная сериализация. И вот в свете того, что можно что угодно хранить в JSON, пакуя и распаковывая одной строчкой, меня удивляют люди, приходящие на форум с очередной костыльной-велосипедной сериализацией, об которую ломаются ноги, с просьбой "помогите прочитать, превратив этот треш во что-то пригодное к работе". И то звездочками разделяют, то процентиками, то еще какой синтаксис выдумывают хитровыбоенный. Вместо того, чтобы просто сделать json_encode/json_decode.
а можно коротенький пример как в моем случае реализовать через сериализацию? не могу уложить в голове то, то прочитал про сериализацию и то, что вижу у себя на экране)
То, что у вас на экране, если сгенерировано не вами, уже никак не исправить, оно изначально сериализовано на через самодельные костыли и лечению не поддается. Если же это было сделано вами, то надежда есть. Вот глядите. Вам выше код дали, который этот ужас читает в массив, так? А теперь сделайте так: PHP: var_dump(json_encode($arrayResult)); И посмотрите, что оно выдало. Текст с фигурными скобками и двоеточиями - это наш json. Текстовое представление массива. Вы можете сохранить его отдельно и потом прочитать вообще в любой среде, которая умеет работать с json-форматом. Вы можете передать этот json на клиент и там превратить в структуру данных. То есть, по факту, вы можете переносить структуру данных между приложениями, и быть уверенным, что она будет выглядеть везде одинаково. Это вот прелести стандартизации. В PHP, чтобы эта строка снова стала массивом, нужно исполнить с ней PHP: json_decode($json_string, true); Если второй параметр (true) не передать, или передать false, то функция вернет не массив, а объект. Тут сами решайте, что вам нужно конкретно. Попробуйте сделать var_dump и для этого случая. Увидите уже не строку текста, а вполне себе php-массив/объект. Вывод - если хотите красиво и без головной боли десериализовывать данные, храните их изначально правильно сериализованными.