PHP: Масиви в низ. Конвертиране на редове в масиви и обратно

Преобразуването на данни от един изглед в друг е популярен, често единствен механизъм за решаване на проблема. Масивът е прост случай на обект. Line - естественото представяне на информацията за предаване, обработка или съхранение. Опит и семантика, внедрени в PHP: масиви, функции и синтактични конструкции, които ви позволяват да създавате оптимални решения за обработка на информацията във формата, в която е представена.

Информация: символи, линии и данни

В "чистата" форма на информация - низ от символи, език или последователност от сигнали. В програмирането се появяват линии, масиви и обекти - това са варианти на изкуствени струнни структури. Номерата са също линии, но числа, а не символи.


Конвертиране на низ в масив от PHP позволява много различни начини. Има две специални функции, които правят това самостоятелно:
  • $ aArr = explode ('x', 'string');
  • $ aStr = implode ('y', $ aArr).
  • Първата функция намира символа на разделителя 'x' и го разделя на низ 'string'. Полученият масив получава точно броя на елементите (редовете), съдържащи се между символите „x“. Разделителят на символи не е задължително да е класически:
  • запетая;
  • точка;
  • точка и запетая.
  • Можете да разделите един ред чрез подстрока или със специална комбинация от символи. Дължината на низ е strlen () в PHP, като дължината на масива е count (). В първия случай се разглежда броят на символите, а във втория - броя на елементите. Тъй като разделителният знак не е част от елементите на масива, стойността на count ()ще бъде равен на броя разделители в преобразуваната линия минус една.


    Чрез обратната трансформация масивите на PHP се преобразуват в низ с разделителен знак (може да е празен) и всички данни (числа и логически изрази) се сливат в един ред. Елемент от масив може да бъде друг масив, но този случай програмистът трябва да изпълни особено. Функцията implode () е далеч от рекурсия.
    В този пример няма проблем да преобразуваме PHP масиви в ред, докато в техните елементи няма друг масив. При преобразуването на асоциативни елементи, ключовата информация се губи. По-специално, елементите на "източване" и "праскова" ще бъдат лишени от ключовете си.

    Сепаратори на данни и ключове

    Не приемайте разделителите на точка, запетая, двоеточие и т.н. Това е частен случай на разделяне на данни един от друг. Когато низ се трансформира в PHP, многомерният масив няма да работи и асоциативните индекси ще се срутят от нищото. Когато се анализира ред по разделител, линията винаги се извежда. Но това не е причина да се спираме на постигнатото. Като вземете един ред в съставни елементи, можете да отидете по-далеч.
    Например, имаше абзац, имаше няколко изречения в него (разделител ". Е точка), в изречението няколко фрази (разделители," - запетая, ";" - точка и запетая. - точка), фразата е думи (разделител "" - пространство, "," - запетая, ";" - точка и запетая. "-" точка "). При такова сортиране в PHP многоизмерният масив ще излезе лесно, но алгоритъмът ще бъде много грозен: броят на сепараторите се увеличава, а липсата на комуникация между съседни точки е гарантирана, за да се осигури дублиране.изречения, фрази и думи.
    Разглобяване на низ, можете веднага да конвертирате последователностите от цифри, а логическите стойности са верни и неверни. Но това, по-специално, ключовата информация все още няма да се появи, защото като ключ - има смисъл, машината може да създаде само цифров индекс.

    Композитни разделители

    Заключението на масив от PHP в низ се използва често за официални цели. Конфигурационният файл е традиционно написан по ред, а името на стойността разделя символа един или двоеточие. С това решение, изходът на масив в PHP се извършва във файл, който автоматично разделя редовете и автоматично връща асоциативни масиви с обратно разпознаване. При четене на файл, програмистът получава низ и разделя всеки ред на "=" или ":", получава името и стойността му. Много популярна манипулация, макар и по-модерна употреба на XML-маркиране по простата причина, че в допълнение към имената и стойностите, можете да запазите и възстановите допълнителни данни, например атрибути на променливите.
    В един пример с абзаци (например, естествен текст за конструиране на речник или резултат от парсване за създаване на извадка от данни), не е специфична процедура за преобразуване на низ в масив, а интегрирано решение за всички абзаци или блокове информация. Обикновено такава задача изисква обратното решение, когато формираният "набор" от данни ще трябва да се използва за търсене на информация или за архивиране на линията.

    Разглобяване и сглобяване на низове - валидиране на данни

    В PHP масивите подред са точно решение. Ако информацията за източника може да има синтактични грешки, това е излишнопропуски, неправилни знаци, тогава те няма да бъдат разглобени. Резултатът от трансформацията на информацията от източника чрез неписаните закони за програмиране е строго формален, а резултатът ще бъде ясно подреден на рафтовете.
    Обратната процедура ще ви позволи да създадете правилната начална линия. Ако сравним обема на оригиналната информация и резултата от обратната трансформация, тогава можем да направим изводи за това къде са направени грешките или за загуба на данни. В PHP дължината на масив в контекста на началната дължина на низа може да позволи изтеглянето на необходимите изводи.

    Тагове за време, дата и събития

    При разработването на отговорни проекти при създаването на обекти за контрол, като време или събития, низът е единичен изглед на данните, а масивът е различен. Но в приложението те са еквивалентни. Когато е необходимо да се извършат математически или логически изчисления, програмистът манипулира масив, когато е необходимо да се съхраняват данни, той използва опция за низ.
    Индексите за достъп до полетата на базата данни са реална практика на съвместни действия на MySQL и PHP, масиви в низ = един индекс върху редовете на няколко таблици на база данни. Ако базата данни съдържа дузина таблици, и във всяка таблица от редове може да се избере комбинация от имена (стойности) в дадена комбинация, след като се формират масиви за достъп на редовете, впоследствие имате достъп до тях по алгоритъма на индекса, а не от търсенето в базата данни ,

    Преобразуването на масив в низ може да се разглежда като алгоритъм за формиране на желания индекс, докато съдържанието на масива се формира изцяло под контрол.други събития или действия на потребителя.

    Обединяване на масиви

    PHP функциите ви позволяват да манипулирате масиви свободно. Но винаги има задачата да се направи извадка от уникални данни или да се намерят данни в масив. Първият проблем се решава по итеративен начин: масивът (или няколко масива) се премества и се формира поредица от уникални стойности - очевидно решение, но не и най-ефективното. Намирането на данни в масив също е цикъл и ако има много елементи, тогава цикълът ще бъде достатъчно дълъг и ще отнеме значително време. Можете да изпратите масив в низ и да използвате функцията strpos (), за да намерите записа на необходимия елемент, но това ще доведе до проблема за откриване на фалшиво въвеждане. Например, думата "тава" е претърсена, но е намерена неговото влизане в думата "чук". Можете да се отървете от такива грешки, ако всички елементи на масива се обединят в ред чрез специален ограничител, който ще избегне несигурността. Ако линията е "[тава]" и "[чук]", тогава няма да има проблеми с търсенето. Но няма гаранция, че при реални обеми данни функцията strposp () работи по-бързо от цикъла, грабва елементите на масива.

    Решение на обекта: масиви + линии

    Най-доброто решение е, когато масив или низ самостоятелно изпълнява правилното действие. Ако донякъде усложни масивите и опрости линиите, защото първият - това е частен случай на обекта, а вторият - това е традиционната сериализация, тогава всеки ще се занимава с техния бизнес.
    В точното време един обект е масив и когато се изисква низ, той ще бъде низ. Не е задължително едновременно да има обект и масив и низ. Можете да създадете уникаленбърза структура на данните. И логиката на "масив" и "низ" за извършване на методи на обекта. Обектно-ориентираният подход опростява решаването на много задачи за обработка на информацията за низовете, позволява ви да не се фокусирате върху масиви, цикли и функцията за обработка на струните на PHP.

    Динамика на значението

    И двете редове и масиви - това е истинско усещане за реалност, обхват на приложение, задачи. Няма такава задача - да изпращате последователно PHP масиви. Но има задача да се получи параграф (изречения, фрази, думи, числа) въз основа на резултатите, получени в предишния алгоритъм.
    Предишният алгоритъм има значение, а точното изразяване на това съдържание се съдържа в масива. Следващият етап от алгоритъма е превръщането на смисъла в друго представяне, удобно за по-нататъшна обработка или приложение. Разглеждайки алгоритъма, като динамика на смисъла и трансформациите на данните, е възможно да се формират надеждни, разбираеми и ефективни трансформации.

    Свързани публикации