PHP масив в масив: пример

28.05.2019

PHP е модерен език за програмиране, който е популярен и широко използван. Подобно на другите, той има синтаксис и семантика. Както се предполага, че инструменти от сферата на интернет технологиите: в PHP всяка променлива може да променя вида си както и когато желае разработчика.

Php масив в масив

В дните на класическата статика, особено когато всички променливи трябваше да бъдат описани предварително, програмистите дори не си и помисляха да използват език извън синтаксиса си .

Днес в Php масив без изрична индикация за вида на елементите му (включително масив или обект с неограничено ниво на вмъкване) е реалност , следователно: синтаксисът и семантиката на езика могат да се интерпретират по ваша преценка.

Основни понятия

Тъй като не е необходимо да описвате нищо, масивът може да се покаже на празно място:

  • $ aMassa [] = 'първата стойност е низът';
  • $ aMassa [] = 123; // втората стойност е число.

С други думи, за да се добави към масив в PHP , изобщо не е необходимо да се предхожда това действие с описателна конструкция:

  • $a_ins = array (); публичен $ a_ins = array (); //

можно сразу писать: това е масив, можете веднага да напишете:

  • -> a_ins [] = new scDocxS_tr( $cLine , $oDocx ) $ this -> a_ins [] = new scDocxS_tr ( $ cLine , $ oDocx )

и всичко ще бъде абсолютно правилно.

В PHP обаче изтриването на елемент от масив е същото като изтриването на променлива.

  • unset ($ aMasse ['elementName']); // изтрива масива по ключ;
  • unset ($ aMassa [1]); // изтрива втория елемент от масива;
  • unset ($ aMassa); // изтрива целия масив.

Това е малко необичайно, подобно на изтриването на нормална променлива.

Редовни и асоциативни масиви

Според синтаксиса на PHP: ключовете от масиви са винаги последователност от цели числа. Това твърдение винаги е вярно, но не винаги е вярно, че тази последователност е непрекъсната.

Ключове от PHP масив

Когато асоциативен масив в PHP се превърна в обичаен навик, връзката с ключовете не се е променила, само елементите, които са получили ключа, определен от програмиста (всичко друго, освен масив или обект) започват да имат:

  • обикновен ключ в ред;
  • специфичен ключ за определен елемент от масива.

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

"Антимасивна" забележка

Разбира се, можете да намерите такива задачи, но по-често има такива решения, когато програмата много прилича на чудовищата на PL / 1 или Fortran, което прави процесора на големите съветски компютри от серията EC / IBM вцепенен.

PHP масив към низ

Винаги можете да се разбирате със скромни и прости алгоритми, дори когато трябва да изчислите траекторията на полета до Уран или Нептун. Летете дълго време, което е трудно с чудовищни ​​алгоритми, въоръжени с космически масиви.

Крайните граници в програмирането винаги са опасни, паметта може да свърши в най-неочакван момент, а логиката на PHP не контролира не само работата с паметта за дълго време, при по-внимателно разглеждане можете да откриете грешни изчисления в целия диапазон от възможни ситуации.

Масиви и низове

Светът винаги е символ, т.е. в контекста на език за програмиране, струни. Дори когато програмата е изцяло посветена на математически изчисления, числата и номерата са еднакви символи.

Включете PHP масив към низ - лесно, точно като обратно. Може дори да се каже, че тази трансформация е станала вид конструкция, която все още не е въплътена в синтаксиса на езика, но вече е представена като опит от функциите explode () и implode ().

explode () пример за използване

Ето предизвикателството:

  • = $oBase ->iLineSel( 'd_name, d_work_folder, d_load' , 'rm_documents' , ... $ cSel = $ oBase -> iLineSel ( 'd_name, d_work_folder, d_load' , 'rm_documents' , ...

създава низ:

  • "Име на файл | Работна папка | FlagLoad"

който е дизайн:

  • = explode ( '|' , $cSel ) $ aSel = експлодира ( '|' , $ cSel )

превръща се в масив:

  • $ aSel [0] = "Име на файла";
  • $ aSel [1] = "Работна папка";
  • $ aSel [2] = "Изтегляне на флаг";

Много удобно и практично. Функцията на обратния implode () свързва всички елементи на масив в един ред, без да прави разлика между стойности и числа. Ще има трудности с стойностите на други видове (обекти, вътрешни масиви), но те могат да бъдат решени.

PHP: масив в масив

Практиката на използване на масиви има три характерни точки. Редовен масив (елементи са достъпни чрез езикови ключове), асоциативен масив (елементи са налични от програмните ключове) и всякакви опции за ключове, но обектите са стойности, в простия случай, само други масиви.

Php асоциативен масив

Често е необходимо да се използва масив в PHP масив. Като цяло, масив (особено когато е асоциативен) може да се разглежда като изход от синтаксиса на езика: ако дадена променлива е само една стойност в даден момент, тогава масивът е набор от стойности.

Асоциативният масив е маса от променливи, чиито имена и стойности се формират по време на работа на програмата и следователно могат да се използват според идеята на програмиста, а не по синтаксиса на езика. Така ключът определя използването на стойността. Важно е да се разбере: това не е ключ към стойност, а „използване“ на стойност. Например в конструкцията на ключ (масив [ключ]) {случай 'x1': func1 (); случай 'x2': func2 (); ...}.

В PHP обаче масивът в масив винаги ще бъде тясно свързан с всеки случай на употреба, тъй като други конструкции (оператори и изрази) по дефиниция изобщо не са „масивни“. С други думи, придаването на собствения смисъл на масива, винаги ще трябва да се уточнява по време на употреба.

Ситуацията се променя драматично, когато няма масиви, а обекти в масива.

Обектни масиви - динамика

Когато масивът съдържа обекти като елементи, това е много практичен начин да се премине отвъд стриктното използване (тоест, „извън“ синтаксиса).

Php изтрива елемент от масив

Един обект е по-разширена структура от данни от масив. Всеки обект може да включва редица масиви. За разлика от последния, обектът също има методи, които са пряко свързани с него и съдържат правилната функционалност. Методите свързват вътрешното съдържание на даден обект с външни събития, функции и други обекти.

Обектите се характеризират с наследяване, изпълнение на функционалността, както от горе до долу, така и отзад - всичко зависи от логиката, приложена от програмиста. Но във всеки случай, функционалните методи на обектите могат да бъдат използвани вместо всяка синтактична конструкция [if () {} else {}; switch () {case '': ... прекъсване; случай '': ... почивка; }; while () {}], те могат да работят и като оператори на присвояване и да формират изпълними изрази.

Благодарение на наследяването и полиморфизма, който се реализира напълно, можете да промените синтаксиса на PHP "масив в масив" на вашата собствена версия "масив чрез логиката на неговите обекти". Последното означава изключително проста, но изключително ефективна идея. Създаване на масив от PHP обекти: add to array = add абстрактен елемент.

PHP добави към масив

Абстрактни и реални обекти

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

Почти винаги трябва да имате абстрактен елемент и система от абстрактни елементи. Не винаги е възможно да се наследи система от обекти от обект, точно както не всички задачи позволяват система от обекти като първоначален обект.

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

Пример „Правилни документи“

, но дала возможность разрабатывать сайты, которые легко манипулируют документами MS Word: могут читать, обрабатывать и создавать их. Библиотеката PhpOfficePhpWord не стана категорично популярна , но даде възможност за разработване на уебсайтове, които лесно манипулират MS Word документи: те могат да ги четат, обработват и създават.

Не може да се каже, че библиотеката е лесна за научаване, но определено има област за нейното ефективно използване. Следните скрийншотове на кода показват как можете да опишете набор от масиви и да ги попълните.

Пример.  Описание на масива

В началния етап, попълването на масиви е следното: масивът $ aSel се чете от таблиците на базата данни, преобразува се в PHP масив в низ, действието възниква за всеки масив, използвайки функцията explode ().

Пример.  Запълване на масиви

Описаното е отнемащо време, но доста осезаема форма на прилагане на масиви към сериозен практически проблем.

Идеите за използване на масиви и ООП, описани по-рано, бяха изразени в синтактичния анализ на тялото на документа, който, както е известно, е изграден съгласно стандарта OOXML. За да се реши този проблем, просто е невъзможно да се предвиди вариацията на масиви в масиви за всички варианти на съдържанието на документа, но е много възможно да се предвиди един масив от документи.

За да се обозначи в този масив като елемент, само един параграф или таблица също е на разположение, и тогава въпросът за технологията: абзацът е разделен на стилове и текстове, а таблицата - в клетки, в които лежат параграфи.

Това решение работи, е достъпно и осезаемо. Тя не изисква да съхранява в паметта множество големи масиви и не принуждава дизайна да планира структурата на масиви, както при четене на документ, така и при неговото създаване.

Прост, практичен, достъпен.