Tablica PHP w tablicy: przykład

28.05.2019

PHP to nowoczesny język programowania, który jest popularny i szeroko stosowany. Podobnie jak inni, ma składnię i semantykę. Jak ma to miejsce w przypadku narzędzi ze sfery technologii internetowych: w PHP dowolna zmienna może zmienić swój typ tak, jak chce programista.

Tablica php w tablicy

W czasach klasycznej statyki, zwłaszcza gdy wszystkie zmienne wymagały wcześniejszego opisania, programiści nawet nie myśleli o używaniu języka poza jego składnią .

Dzisiaj o godz Tablica php bez wyraźnego wskazania rodzaju jego elementów (w tym tablicy lub obiektu z nieograniczonym poziomem zagnieżdżenia) jest rzeczywistością , dlatego: składnia i semantyka języka mogą być interpretowane według własnego uznania.

Podstawowe pojęcia

Ponieważ nie musisz niczego opisywać, tablica może pojawić się w pustym miejscu:

  • $ aMassa [] = 'pierwsza wartość to ciąg';
  • $ aMassa [] = 123; // druga wartość to liczba.

Innymi słowy, aby dodać do tablicy w PHP , nie jest konieczne poprzedzanie tej akcji opisową konstrukcją:

  • $a_ins = array (); public $ a_ins = array (); //

можно сразу писать: to jest tablica, możesz natychmiast napisać:

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

i wszystko będzie absolutnie poprawne.

Jednak w PHP usunięcie elementu tablicy jest takie samo jak usunięcie zmiennej.

  • unset ($ aMasse ['elementName']); // usuń tablicę według klucza;
  • unset ($ aMassa [1]); // usuń drugi element tablicy;
  • unset ($ aMassa); // usuń całą tablicę.

Jest to dość nietypowe, podobne do usuwania zwykłej zmiennej.

Regularne i asocjacyjne tablice

Zgodnie ze składnią PHP: klucze tablicy są zawsze ciągiem liczb całkowitych. To stwierdzenie jest zawsze prawdziwe, ale nie zawsze jest prawdą, że ta sekwencja jest ciągła.

Klucze tablicy PHP

Kiedy asocjacyjna tablica w PHP stała się powszechnym nawykiem, relacja z kluczami się nie zmieniła, tylko elementy, które otrzymały klucz wyznaczony przez programistę (cokolwiek poza tablicą lub obiektem) zaczęły mieć:

  • zwykły klucz w porządku;
  • określony klucz dla określonego elementu tablicy.

Język nie ogranicza programisty pod względem liczby elementów i wymiarów, ale w obu przypadkach należy przestrzegać widocznej i zrozumiałej liczby. Świat jest bardzo zróżnicowany, ale struganie tablic o więcej niż dwóch wymiarach jest lekcją z bardzo wątpliwą semantyką. Przyzwoita orientacja w liczbie elementów to tysiąc lub dwa, ale nie milion lub miliard.

Uwaga "Antymassive"

Oczywiście można znaleźć takie zadania, ale częściej są takie rozwiązania, gdy program bardzo przypomina potwory na PL / 1 lub Fortran, co sprawiło, że procesor dużych sowieckich komputerów z serii EC / IBM stał się odrętwiały.

Tablica PHP do ciągów znaków

Zawsze możesz dogadać się ze skromnymi i prostymi algorytmami, nawet jeśli musisz obliczyć trasę lotu do Urana lub Neptuna. Lataj przez długi czas, co jest trudne z potwornymi algorytmami uzbrojonymi w tablice kosmiczne.

Skrajności w programowaniu są zawsze niebezpieczne, pamięć może się skończyć w najbardziej nieoczekiwanym momencie, a logika PHP nie kontroluje nie tylko pracy z pamięcią przez długi czas, po bliższym zbadaniu można wykryć błędne obliczenia w całym zakresie możliwych sytuacji.

Tablice i łańcuchy

Świat jest zawsze symbolami, czyli w kontekście języka programowania, łańcuchów. Nawet jeśli program jest całkowicie poświęcony obliczeniom matematycznym, liczby i liczby są tymi samymi znakami.

Włącz Tablica PHP do ciągów znaków - łatwo, tak jak z powrotem. Można nawet powiedzieć, że ta transformacja stała się rodzajem konstrukcji, jeszcze nie zawartej w składni języka, ale już przedstawionej jako doświadczenie przez funkcje explode () i implode ().

Przykład użycia explode ()

Oto wyzwanie:

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

tworzy ciąg:

  • "FileName | WorkingFolder | FlagLoad"

który jest projekt:

  • = explode ( '|' , $cSel ) $ aSel = explode ( '|' , $ cSel )

zamienia się w tablicę:

  • $ aSel [0] = "Nazwa pliku";
  • $ aSel [1] = "Folder roboczy";
  • $ aSel [2] = "Oznacz pobieranie";

Bardzo wygodny i praktyczny. Funkcja inverse impode () implikuje wszystkie elementy tablicy w jednej linii, nie rozróżniając między wartościami łańcuchów a liczbami. Będą trudności z wartościami innych typów (obiekty, tablice wewnętrzne), ale można je rozwiązać.

PHP: tablica w tablicy

Praktyka używania tablic ma trzy charakterystyczne punkty. Regularna tablica (elementy są dostępne przez klucze języków), tablica asocjacyjna (elementy są dostępne przez klucze programisty) i wszelkie opcje dla kluczy, ale obiekty są wartościami, w prostym przypadku, tylko innymi tablicami.

Tablica asocjacyjna PHP

Często konieczne jest użycie tablicy w tablicy PHP. Ogólnie rzecz biorąc, tablica (zwłaszcza gdy jest skojarzona) może być postrzegana jako wyjście ze składni języka: jeśli zmienna jest tylko jedną wartością na raz, tablica jest zbiorem wartości.

Tablica asocjacyjna to masa zmiennych, których nazwy i wartości są tworzone podczas działania programu, a zatem mogą być używane zgodnie z ideą programisty, a nie składnią języka. Tak więc klucz określa użycie wartości. Ważne jest, aby zrozumieć: nie jest to klucz do wartości, ale "wykorzystanie" wartości. Na przykład w konstrukcji przełącznika (array [key]) {case 'x1': func1 (); case "x2": func2 (); ...}.

Jednak w PHP tablica w tablicy będzie zawsze ściśle powiązana z dowolnym przypadkiem użycia, ponieważ inne konstrukcje (operatory i wyrażenia) z definicji nie są "masywne". Innymi słowy, nadanie macierzowi własnego znaczenia będzie zawsze musiało być określone podczas użytkowania.

Sytuacja zmienia się dramatycznie, gdy nie ma tablic, ale obiektów w tablicy.

Tablice obiektów - dynamika

Gdy tablica zawiera obiekty jako elementy, jest to bardzo praktyczny sposób wyjścia poza ścisłe użycie (to znaczy "poza" składnią).

PHP usuwa element tablicy

Obiekt jest bardziej zaawansowaną strukturą danych niż tablica. Każdy obiekt może zawierać pewną liczbę tablic. W przeciwieństwie do tego ostatniego, obiekt ma również metody, które są bezpośrednio z nim związane i zawierają odpowiednią funkcjonalność. Metody łączą wewnętrzną zawartość obiektu ze zdarzeniami zewnętrznymi, funkcjami i innymi obiektami.

Obiekty charakteryzują się dziedziczeniem, wykonaniem funkcjonalnym, od góry do dołu iz powrotem - wszystko zależy od logiki zaimplementowanej przez programistę. Ale w każdym przypadku można użyć funkcji-metod obiektów zamiast jakiejkolwiek struktury składniowej [if () {} else {}; switch () {case '': ... break; case "": ... break; }; while () {}], mogą również pracować jako operatory przypisania i tworzyć wyrażenia wykonywalne.

Dzięki dziedziczeniu i polimorfizmowi, który jest w pełni zaimplementowany, możesz zmienić składnię PHP "array in array" na swoją własną "tablicę" poprzez logikę jej obiektów. To ostatnie oznacza niezwykle prosty, ale niezwykle skuteczny pomysł. Tworzenie tablicy obiektów PHP: dodaj do tablicy = dodaj element abstrakcyjny.

PHP dodaj do tablicy

Obiekty abstrakcyjne i rzeczywiste

Abstrakcja w programowaniu obiektowym jest raczej hołdem dla tradycji, które zmieniły oblicze współczesnego programowania. W rzeczywistości obiekt początkowy nie jest abstrakcyjny i musi rzetelnie opisać wszystko, co powinien mieć jego potomek. Ale ponieważ implementacja OOP jest kulawa nie tylko w PHP, zazwyczaj trudno jest sobie poradzić z jednym abstrakcyjnym elementem.

Prawie zawsze trzeba mieć abstrakcyjny element i system abstrakcyjnych elementów. Nie zawsze możliwe jest dziedziczenie systemu obiektów z obiektu, tak jak nie wszystkie zadania umożliwiają system obiektów jako obiekt początkowy.

Ogólnie rzecz biorąc, możliwe jest, że, i inne, pytanie brzmi, że w każdym przypadku należy kierować się zdrowym rozsądkiem. OWP jest na etapie szybkiego rozwoju, ma wiele białych plam i świeżych pomysłów. Dlatego łączenie improwizacji, intuicji i zdrowego rozsądku jest jedynym rozsądnym rozwiązaniem.

Przykład "Prawidłowe dokumenty"

, но дала возможность разрабатывать сайты, которые легко манипулируют документами MS Word: могут читать, обрабатывать и создавать их. Biblioteka PhpOfficePhpWord nie stała się kategorycznie popularna , ale dała możliwość opracowania stron internetowych, które łatwo manipulują dokumentami MS Word: mogą je czytać, przetwarzać i tworzyć.

Nie można powiedzieć, że biblioteka jest łatwa do nauczenia, ale jest zdecydowanie obszar do jej efektywnego wykorzystania. Poniższe zrzuty ekranu kodu pokazują, jak możesz opisać zestaw tablic i wypełnić je.

Przykład.  Opis tablicy

Na początkowym etapie wypełnianie tablic jest następujące: tablica $ aSel jest odczytywana z tabel bazy danych, konwertowana na tablicę PHP na łańcuch znaków, akcja występuje w każdej tablicy przy użyciu funkcji explode ().

Przykład.  Wypełnianie tablic

Opisana metoda jest czasochłonną, ale całkiem namacalną formą zastosowania tablic do poważnego problemu praktycznego.

Pomysły na wykorzystanie tablic i opisanego wcześniej OOP zostały wyrażone podczas analizowania treści dokumentu, który, jak wiadomo, jest zbudowany zgodnie ze standardem OOXML. Aby rozwiązać ten problem, po prostu niemożliwe jest przewidzenie zmian tablic w tablicach dla wszystkich wariantów treści dokumentu, ale bardzo możliwe jest przewidzenie pojedynczej tablicy dokumentów.

Do oznaczenia w tej tablicy jako elementu dostępny jest tylko akapit lub tabela, no, a następnie sprawa technologii: akapit jest podzielony na style i teksty, a tabela - na komórki, w których znajdują się akapity.

To rozwiązanie działa, jest dostępne i namacalne. Nie wymaga przechowywania w pamięci wielu dużych tablic i nie wymusza na projekcie planowania struktury macierzy, zarówno podczas czytania dokumentu, jak i podczas jego tworzenia.

Prosty, praktyczny, niedrogi.