/ / PHP: pole v poli. Vyhľadávanie v poli PHP

PHP: pole v poli. Vyhľadávanie v poli PHP

Programovanie je syntax a sémantika. Prvý je určený pravidlami jazyka, druhým je skúsenosť vývojára. Pokiaľ ide o poli, developer môže objektívne načítať syntax so sémantikou. Toto nie je objekt, ale nie pole v tradičnom zmysle. PHP umožňuje vytvoriť súbory premenných rôznych typov, vrátane seba. Prvok poľa môže byť funkciou, tj schopnosťou načítať pole skutočným algoritmom, ktorý má skutočný význam.

Syntax je stabilný, ale líši sa od verzie naa nemusia byť vždy kompatibilné, a to ani zdola nahor. Programy prenosnosti - dobre zabudnuté úspechy minulého storočia. Sémantika sa vyvíjajú a môžu sa vždy uplatňovať nielen v akejkoľvek verzii akéhokoľvek jazyka; stalo sa tradíciou používať syntaktické konštrukcie na vyjadrenie skutočnosti, že jazykové pravidlá neboli ani predvídané. Na príklade polí to možno najjednoduchšie pochopiť.

Stavebné pole

Pole v PHP má pohodlnú syntax a funkčnosť. Tento typ údajov je možné opísať vopred, ale často je vhodné vytvárať pole podľa potreby.

verejné $ aNone = array (); // pole je popísané a neobsahuje nič

verejné $ aFact = pole ("avokádo", "broskyňa", "čerešňa"); // v tomto poli sú tri prvky

Vytvorenie poľa pri kontrole stavu:

$ cSrcLine = "reťazec analyzovaných údajov";

pre ($ i = 0; $ i <13; $ i ++) {

$ cUserLine = vstupUserLine (); // zadajte niečo

ak (checkFunc ($ cSrcLine, $ cUserLine) {

$ aResult [] = "Áno"; // pridať do poľa PHP

} inak {

$ aResult [] = "Nie";

}

}

Výsledkom realizácie tohto príkladu je,rad 13 prvkov, ktorých hodnoty sú iba riadky "áno" alebo "nie". Prvky budú mať indexy od 0 do 12. Rovnaký účinok môže byť získaný vopred zaznamenanej "budúce" PHP-pole na reťazec:

$ cFutureArray = "";

pre ($ i = 0; $ i <13; $ i ++) {

$ cUserLine = vstupUserLine (); // zadajte niečo

ak ($ ​​i> 0) {$ cFutureArray. = "|"; }

ak (checkFunc ($ cSrcLine, $ cUserLine) {$ cFutureArray. = "Áno";

} iný {$ cFutureArray. = "Nie"; }

}

$ aResult = exploduje ("|", $ cFutureArray);

php pole do reťazca

Multidimenzionálne polia

Veľa systémov správy stránok (SMS)použitie polí "vo veľkom meradle". Na jednej strane je to dobrá prax, na druhej strane je aplikácia zložitá. Dokonca aj keď autor chápe doktrínu "PHP pole v poli", nemal by sa zneužívať: nielen, že vývojár musí zvyknúť na zložitú notáciu. Často po nejakom čase sám sám sám dlho pamätá to, čo napísal najprv:

návratové pole (

"view_manager" => pole (41, "template_path_stack" => array (__DIR__ ./../view "),

"smerovač" => pole ("trasy" => pole ("sayhello" => pole (

"typ" => "ZendMvcRouterHttpLiteral",

"možnosti" => pole ("cesta" => "/ sayhello", "predvolené" => pole (

"controller" => "HelloworldControllerIndex", "action" => "index",)))))

"kontroléry" => pole ("invokables" => array (

"HelloworldControllerIndex" => "HelloworldControllerIndexController"))

);

Toto je ukážka praxe "poľa PHP v poli" od ZF2. Nie príliš inšpiratívne na prvý, ale to funguje, a možno je tento úspešný rámec (príklad z modulu ZendSkeletonApplication / modul / HelloWorld / config / module.config.php).

odstrániť prvok php poľa

Pole je dôležitá dátová štruktúra v priebehudizajnu a vývoja. Jeho viacrozmerná verzia bola kedysi populárna, ale v priebehu času tu bola potreba polí maximálne dvoch alebo troch rozmerov. Takže je to jednoduchšie a zrozumiteľnejšie, ale z profesionálneho hľadiska, keď sa niečo začína rozmnožovať, niečo vo vyhlásení o probléme alebo v kóde nie je prípad.

Jednoduché, prístupné a zrozumiteľné

Vytváranie poľa v poli je najlepšieobmedzené na dve alebo tri úrovne. Napriek stabilite a spoľahlivosti PHP umožňuje chyby pri spracovaní syntaktických konštrukcií. To môže byť tolerované tým, že má dobrý editor kódu, zvykne si presne počítať zátvary a čiarky. PHP však nekontroluje typy dát (to je karma moderného programovania) a umožňuje vývojárovi praktizovať sémantické chyby.

Pravidlom je ovládať typy premenných alebovlastné myšlienky premeny sémantiky na syntax sú často neprípustným luxusom. Ide o stratu rýchlosti skriptu, čitateľnosť kódu, ... preto jednoduchosť kódovania má vždy významnú hodnotu.

PHP má významnú negatívnu vlastnosť: Keď dôjde k neistote, skript jednoducho visí. Nie všetky debuggery zvládnu nepredvídané okolnosti a veľa závisí od skúseností a intuície vývojára. Čím je algoritmus jednoduchší, tým štruktúrovanejšia je informácia, tým je pravdepodobnejšie nájsť chybu alebo ju vôbec nepripustiť.

Je charakteristické, že keď sa objavili prvé sústavy,boli navrhnuté varianty údajov vo forme štruktúr - nepríjemný pokus vytvoriť niečo z rôznych typov údajov. Prvý prežil a nadobudol novú efektívnu syntax, tá druhá zotrvala v histórii.

Jednoduché a asociačné polia

Nahrávanie dvojrozmerného poľa je ďalší párzátvorky "[" a "], napríklad: $ aSrcData [1] [2] odkazuje na prvok [2] poľa [1] vstupujúce do poľa $ aSrcData. V PHP nie je žiadna požiadavka na vopred deklarované údaje. Všetky deklarované informácie sa dajú vždy skontrolovať.

Je veľmi efektívne vytvoriť niečo len potom,ak je to potrebné, v podobe, v akej to bolo potrebné, a zničiť, keď zmizla potreba. Pomocou zmysluplných mien ako kľúčov (indexov) môžete získať čitateľné konštrukty, ktoré majú zmysel v kontexte aktuálneho miesta v algoritme:

$ aAnketa ["meno"] = "Ivanov";
$ aAnketa ["age"] = 42;
$ aAnketa ["work"] = "Riaditeľ";
$ aAnketa ["aktívna"] = pravá;
$ aTabuľka [] = $ aAnketa;

$ aAnketa ["meno"] = "Petrov";
$ aAnketa ["age"] = 34;
$ aAnketa ["práca"] = "Správca";
$ aAnketa ["aktívna"] = pravá;
$ aTabuľka [] = $ aAnketa;

$ aAnketa ["meno"] = "Afanasyev";
$ aAnketa ["age"] = 28;
$ aAnketa ["work"] = "Práca";
$ aAnketa ["aktívna"] = nepravda;
$ aTabuľka [] = $ aAnketa;

$ sOne. = implode (";", $ aTable [1]). "<br/>"; // druhé pole PHP v reťazci
$ sOne. = $ aTabuľka [1] ["práca"]; // odkaz na jeden prvok druhého poľa

Výsledkom tohto príkladu (prvá pole - obvyklé kľúče v nej začína 0, druhého poľa - asociatívne, sú štyri tlačidlá: "názov", "veku", "práca", "aktívny"):

$ sOne = "Petrov; 34; manažér; 1 <br/> manažér";

Na tomto jednoduchom príklade môžete vidieť, akoVytvorený dotazník môže byť použitý pre všetkých zamestnancov. Môžete vytvoriť skupinu zamestnancov s indexmi podľa ich poznávacích značiek, a ak potrebujete konkrétneho zamestnanca, vyberte ho podľa čísla zamestnanca.

Ak v organizácii existujú jednotky, alebo existujúsezónnych pracovníkov, alebo je potrebné oddelene identifikovať pracujúcich dôchodcov, ... dizajn "poľa PHP v poli" je veľmi pohodlné, ale človek by nikdy nemal byť unesený dimenzionálnosťou. Dva alebo tri rozmery sú limitom pre efektívne riešenie.

vyhľadávanie v poli php

Kľúče pre prácu s poliami

Keby to záležalo na tom, ako všetko funguje, potomV posledných rokoch boli úplne zabudnuté tradície binárneho obdobia, kedy programátor chcel presne vedieť, ako sú uložené prvky poľa a chcel mať k nim priamy prístup. Existuje veľa znakových kódov, ktoré v pamäti zaberajú viac ako jeden bajt. Slovo "bit" sa teraz dá nájsť iba pri operáciách vyhľadávania bitov, ale vyhľadávanie v poli PHP je samostatná téma. Prístup k elementom môže byť jednoduchý a asociatívny. V prvom prípade sú prvky poľa (ktoré majú niektorý z typov dostupných v PHP) číslované 0, 1, 2, ... V druhom prípade programátor určuje svoj vlastný index, často nazývaný "kľúč", aby získal požadovanú hodnotu.

$ aLine ["ovocie"] = "oranžová"; // tu kľúč PHP poľa = "ovocie"

alebo (aby bolo všetko správne s kódovaním stránky a kódom):

$ aLine [iconv ("utf-8", "CP1251", "ovocie")] = iconv ("utf-8", "CP1251", "oranžový");

Pri pridávaní $ aLine na novú hodnotu:

$ aLine [] = iconv ("utf-8", "CP1251", "broskyňa");
$ aLine [iconv ("utf-8", "CP1251", "zelenina")] = iconv ("utf-8", "CP1251", "uhorka");
$ aLine [] = iconv ("utf-8", "CP1251", "baklažán");

v dôsledku cyklu:

foreach ($ aLine ako $ ck => $ cv) {
$ cOne. = $ ck. "=". $ cv. "<br/>";
}

dostane:

ovocie = oranžová
0 = broskyňa
zelenina = uhorka
1 = baklažán

Kľúč PHP poľa pri pridávaní prvkov "broskyňa" a "baklažán" sa vytvorí postupne od 0 a keď zadáte jeho hodnotu, bude sa rovnať tejto hodnote.

Odstránenie položiek z poľa

php odstrániť pole

Najjednoduchší spôsob odstránenia prvku poľa PHP počasspracovanie. V tomto prípade napríklad ako výsledok vykonania slučky sa naskenuje pôvodné pole a vytvorí sa nový, do ktorého sa jednoducho nepíšu nepotrebné prvky.

Je možné konať jednoduchšie. Ak sa použije posledný príklad:

deaktivovať ($ aLine [0]); // odstráňte prvok poľa PHP

výsledok bude:

ovocie = oranžová
zelenina = uhorka
1 = baklažán

Varianty manipulačných prvkov políje možné zostaviť súbor. Napríklad pomocou funkcií: implode () a explode (), môžete napísať pole PHP do reťazca s jedným oddelením a analyzovať ho do iného poľa - iným oddeľovačom.

Ak chcete jednoducho odstrániť celé pole v PHP, stačí napísať: unset ($ aLine);

To stačí.

Vyhľadávanie poľa

PHP obsahuje špeciálne vyhľadávacie funkcie.array_keys (), array_values ​​(), array_key_exists () a in_array (), predtým, než sa rozhodnete ich použiť, mali by ste zvážiť možnosť vykonať vyhľadávanie v mape PHP samostatne.

php pole poľa

Každý projekt je špecifická oblasť,zostrojené polia, najmä ak je časť sémantiky prenesená do syntaxe a je reprezentovaná súborom úplne špecifických zmysluplných kľúčov. To vám umožňuje vykonávať vlastné vyhľadávacie funkcie, ktoré môžu byť tiež označené zmysluplne.

V PHP môžete volat funkcie, ktorých meno je určené počas vykonávania programu. Veľmi praktický príklad z knižnice PHPWord, ktorá vám umožňuje čítať a vytvárať dokumenty MS Word:

$ elements = array ("Text", "Inline", "TextRun", "Link", "PreserveText", "TextBreak",
"ListItem", "ListItemRun", "Tabuľka", "Obraz", "Objekt", "Poznámka pod čiarou",
"Endnote", "Kontrolná karta", "Textová karta", "Polia", "Linka");

$ funkcie = array ();

pre ($ i = 0; $ i <počet ($ prvky); $ i ++) {
$ funkcie [$ i] = "add". $ prvky [$ i];
}

V dôsledku toho pole funkcií $ obdrží hodnoty množiny prvkov $, teda názvov skutočných funkcií, ktoré vykonávajú prácu s reálnymi prvkami dokumentu.

Pri volaní funkcií $ [4] pre prvky $ [4] získate dokonalé vyhľadávanie a rýchly výsledok.

Zoradenie položiek

Úloha zoraďovania údajov je dôležitá aPHP ponúka niekoľko funkcií: sort (), rsort (), asort (), ksort (), ... Vzostupné a klesajúce elementy, druhé dve funkcie zachovávajú vzťah medzi klávesmi a hodnotami. Niekedy má zmysel zmiešať hodnoty poľa náhodne - náhodne ().

hodnota php v poli

Používanie funkcií PHP na triedenie by nemalože prvky môžu mať nielen rôzne typy, ale aj nie celkom prirodzený obsah. Po prvé, musíte byť veľmi opatrní pri triedení riadkov obsahujúcich ruské písmená, dátumy triedenia, ako aj čísla, ktoré sú napísané v rôznych formátoch.

php pole v poli

Najlepším spôsobom, ako napísať vlastné dokonalé riešenie, aspoň počas testovacej fázy skriptu, je ručné triedenie. Pomôže to predvídať nepredvídané situácie.

Polia malých písmen

Vďaka funkciám implode () a explodovať ()možno ľahko premeniť na reťazec a vrátiť sa späť. Umožňuje vám uložiť údaje v kompaktnom zobrazení a podľa potreby ich nasadiť do vhodného stavu.

Pole, ktoré sa zmenilo na reťazec, otvára nové možnosti. Napríklad úloha nájsť kľúčové slová v texte vyžaduje, aby sa nájdené slovo znova nepridal.

$ cSrcLine = "Text Text ListItemRun TextBox ListItem TextBox Zaškrtávacie políčko CheckBox TextBox Poznámka";

$ aSrc = exploduje ("", $ cSrcLine);
$ cDstLine = "";

pre ($ i = 0; $ i <počet ($ aSrc); $ i ++) {
$ cFind = "[". $ aSrc [$ i]. "]";
ak (! je_integer (strpos ($ cDstLine, $ cFind))) {
$ cDstLine. = $ cVyhľadajte;
}
}
$ aDst = exploduje ("] [", $ cDstLine);

$ Kužeľ = implodovala ( ";", $ aDst);

V dôsledku toho premenná $ cOne získa len tie hodnoty zo zdrojového riadku, ktoré sa tam zobrazia raz: "Text; ListItemRun; TextBox; ListItem; Kontrola; Box; CheckBox; Poznámka pod čiarou".

Ruský jazyk v kľúči a hodnotách

Neodporúča sa používať nič, čo je spojené.s národnými kódovaniami, v syntaktických konštrukciách. Ruský jazyk, rovnako ako všetky ostatné jazyky, ktorých znaky presahujú hranice a-z, nevytvára problémy, pretože sú v oblasti údajov, ale nie v syntaxe kódu. Niekedy dokonca aj jednoduchá úloha PHP na "vygenerovanie poľa na tlačiareň alebo na obrazovku" povedie k "prasknutiu" a častejšie to jednoducho zastaví skript.

PHP je verný a tolerantný jazyknárodné kódovanie, ale existuje veľa situácií, kedy je potrebné vykonať opäť len to, že kľúčová hodnota sa objaví na správnom mieste v správnom čase, čo sa nedá rozpoznať.

PHP syntax a jazykové prostredie

Pamätajte, že PHP syntax je jedna vec, alekonštruuje túto syntaktickú "dohodu" s inými aplikáciami, s operačným systémom, s hardvérovými možnosťami. Existuje veľa možností, nikdy nie je možné predvídať všetko.

Pravidlo "v kóde je iba kód, a na vstupe,akékoľvek informácie vo vnútri a na výjazde "pomôžu vyhnúť sa neočakávaným prekvapeniam. Hodnota PHP v poli môže byť "ruská", ale kľúč k nemu musí byť syntakticky správny nielen z hľadiska daného jazyka, ale aj z pohľadu prostredia jeho práce.

Čítajte viac: