nisfarm.ru

PHP: pole v poli. Vyhledávání v poli PHP

Programování je syntaxe a sémantika. První je určena pravidly jazyka, druhá zkušeností vývojáře. Pokud jde o pole, může vývojář objektivně načíst syntaxi se sémantikou. Nejedná se o objekt, ale o pole v tradičním smyslu. PHP umožňuje vytvářet sady proměnných různých typů, včetně sebe samých. Prvek pole může být funkcí, to znamená schopnost načíst pole se skutečným algoritmem se skutečným významem.

Syntaxe je stabilní, ale liší se od verze po verzi a nemůže být vždy kompatibilní, a to ani zdola nahoru. Programy přenositelnosti - dobře zapomenuté úspěchy minulého století. Sémantika se vyvíjí a může být vždy použita nejen v jakékoliv verzi nějakého jazyka, stalo se tradicí používat syntaktické konstrukce k vyjádření skutečnosti, že pravidla jazyka nebyla dokonce poskytnuta. Na příkladech polí to lze nejlépe pochopit.

Stavební pole

Pole v PHP má pohodlnou syntaxi a funkčnost. Toto typ dat lze předem popsat, ale často je vhodné vytvářet pole podle potřeby.

public $ aNone = array () - // pole je popsáno a neobsahuje nic

public $ aFact = array (`avocado`, `broskev`, `cherry`) - // v tomto poli jsou tři prvky

Vytvoření pole při kontrole stavu:

$ cSrcLine = `řetězec analyzovaných dat`;

pro ($ i = 0- $ i<13 - $ i ++) {

$ cUserLine = inputUserLine () - // zadat něco

pokud (checkFunc ($ cSrcLine, $ cUserLine) {

$ aResult [] = `Ano` - // přidat do pole PHP

} else {

$ aResult [] = `Ne;`;

}}

}}

V důsledku provedení tohoto příkladu bude vytvořeno pole 13 prvků, jejichž hodnoty budou pouze řádky "Ano" nebo "Ne". Prvky získají indexy od 0 do 12. Stejný efekt lze dosáhnout napsáním "budoucího" pole PHP na řetězec:

$ cFutureArray = ``;

pro ($ i = 0- $ i<13 - $ i ++) {

$ cUserLine = inputUserLine () - // zadat něco

pokud ($ i> 0) `;

pokud (checkFunc ($ cSrcLine, $ cUserLine) {$ cFutureArray. = `Ano`;

} else {$ cFutureArray. = `Ne` -}

}}

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




php pole do řetězce

Multidimenzionální pole

Mnoho systémů řízení webu (SMS) používá pole "ve velkém měřítku". Na jedné straně je to dobrá praxe, na druhé straně je aplikace obtížná. Dokonce i když autor chápe doktrínu "PHP pole v poli", nemělo by se zneužít: nejen vývojář musí zvyknout na složitou notaci. Často po chvíli sám stvořitel dlouho zapamatuje to, co napsal zpočátku:

návratové pole (

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

`router` => pole (`trasy` => pole (`sayhello` => pole (

`typ` => `Zend Mvc Router Http Literal`,

`options` => pole (`route` => `/ sayhello`, `default` => array (

`controller` => `Helloworld Controller Index`, `action` => `index`,)))

`regulátory` => pole (`invokables` => pole)

`Helloworld Controller Index` => `Helloworld Controller IndexController`))

);

Toto je ukázka cvičení «PHP-array v poli“ ZF 2. Ne příliš inspirujícím na první, ale to funguje, a možná je tento úspěšný rámec (příklad z modulu ZendSkeletonApplication / modul / HelloWorld / config / module.config.php).

odstranit prvek pole php

Pole je důležitý návrh dat při návrhu a vývoji. Jeho vícerozměrná verze byla kdysi oblíbená, ale v průběhu času byla potřeba pole s maximálně dvěma nebo třemi rozměry. Je to jednodušší a více intuitivní, ale z hlediska profesionality, když se něco začne násobí, takže něco ve formulaci problému, nebo kód není tento případ.

Jednoduché, přístupné a srozumitelné

Vytvoření pole php v poli je nejlepší omezit na dvě nebo tři úrovně. Navzdory stabilitě a spolehlivosti PHP umožňuje chyby při zpracování syntaktických konstrukcí. To může být tolerováno tím, že má dobrý kód editor, zvyknout si přesně počítat závorky a čárky. PHP však nekontroluje datové typy (to je karma moderního programování) a umožňuje vývojáři procvičovat sémantické chyby.

Pravidlo ovládání typů proměnných nebo vlastní myšlenky přeměny sémantiky na syntaxi je často nepřípustným luxusem. Jedná se o ztrátu rychlosti skriptu, srozumitelnost kódu, ... a proto má jednoduchost kódování vždy významnou hodnotu.

PHP má významnou negativní vlastnost: když vzniká nejistota, skript prostě visí. Ne všechny debuggery se vyrovnávají s nepředvídanými okolnostmi a hodně záleží na zkušenostech a intuici vývojáře. Čím je algoritmus jednodušší, tím je strukturovanější informace, tím pravděpodobnější je najít chybu nebo ji vůbec nepřiznat.

Je příznačné, že když první pole možností datových byla nabídnuta ve formě struktur - nemotorný pokus vytvořit něco z různých typů dat. První přežil a získal novou efektivní syntaxi, která sestoupila do historie.

Jednoduché a asociativní pole

Záznam dvojrozměrné pole - je další dvojice držáků „[“ a „]“, například: $ aSrcData [1] [2] znamená přístup k dokumentu [2] matice [1], vstup do pole $ aSrcData. V PHP neexistuje požadavek na předem ohlášení údajů. Veškeré deklarované informace lze vždy zkontrolovat.

Je velmi efektivní něco vytvořit jen tehdy, je-li to zapotřebí, ve formě, ve které to bylo požadováno, a zničit ho, když zmizí potřeba. Použití smysluplných názvů jako klíčů (indexů) můžete získat čitelné konstrukty, které mají smysl v kontextu současného místa v algoritmu:

$ aAnketa [`jméno`] = `Ivanov`-
$ aAnketa [`věk`] = 42-
$ aAnketa [`work`] = `Ředitel`
$ aAnketa [`aktivní`] = true-
$ aStánek [] = $ aAnketa-

$ aAnketa [`jméno`] = `Petrov`-
$ aAnketa [`věk`] = 34-
$ aAnketa [`work`] = `Správce`
$ aAnketa [`aktivní`] = true-
$ aStánek [] = $ aAnketa-

$ aAnketa [`jméno`] = `Afanasiev`-
$ aAnketa [`věk`] = 28-
$ aAnketa [`work`] = `Práce`
$ aAnketa [`aktivní`] = false-
$ aStánek [] = $ aAnketa;

$ sOne. = implode (";", $ aTable [1]). "
`- // druhé pole PHP v řetězci
$ sOne. = $ aTable [1] [`work`] - // přístup k jednomu prvku druhého pole

Výsledek tohoto příkladu (první pole je normální, klíče v něm začínají 0, druhé pole je asociativní, v něm jsou čtyři klíče: `jméno`, `věk`, `práce`, `aktivní`):

$ sOne = `Petrov-34- manažer- 1
Manager `;

V tomto jednoduchém příkladu můžete vidět, jak lze vytvořit vytvořený dotazník pro všechny zaměstnance. Můžete vytvořit řadu zaměstnanců s indexy podle svých poznávacích značek, a pokud potřebujete určitého zaměstnance, vyberte jej podle čísla zaměstnance.

Má-li organizace podřízené členy, nebo tam jsou sezónní pracovníci, nebo je nutné samostatně identifikovat pracující důchodce, ... design "PHP-pole v poli" je velmi výhodné, ale člověk by nikdy neměl být unesen rozměry. Dva nebo tři rozměry jsou limit pro efektivní řešení.

vyhledávání v php array

Klíče pro práci s poli

Jestliže před záleželo, jak věci fungují, se v posledních letech, tradice binárního éry, kdy programátor chtěl přesně vědět, jak jsou prvky pole uloženy, a přál si, aby jim přímý přístup, zcela zapomenut. Tam bylo hodně kódování znaků, které zabírají v paměti není jeden byte. Slovo „bit“ Nyní je možné se setkat jen v bitové pátracích akcí, ale hledání v poli PHP - je jiná otázka. Přístup k prvkům může být jednoduchý a asociativní. V prvním případě jsou prvky pole (které mají některou z dostupných typů PHP) jsou číslovány 0, 1, 2, ... Ve druhém případě, že programátor určuje vlastní index, který je často označován jako „klíč“ pro přístup k požadované hodnoty.

$ aLine ["fruit"] = "oranžová" - // zde PHP klíč array = "fruit"

nebo (aby bylo vše správné s kódováním stránky a kódem):

$ Aline [iconv ( `UTF-8`, `CP1251`, "ovoce")] = iconv ( `UTF-8`, `CP1251`, "oranžová");

Při přidávání hodnoty $ aLine do nové hodnoty:

$ aLine [] = iconv (`UTF-8`, `CP1251`, `broskev`) -
$ Aline [iconv ( `UTF-8`, `CP1251`, "rostlinný")] = iconv ( `UTF-8`, `CP1251`, "okurka") -
$ aLine [] = iconv (`UTF-8`, `CP1251`, `lilek`);

v důsledku cyklu:

foreach ($ aLine jako $ ck => $ cv) {
$ cOne. = $ ck. `=`. $ cv. "
`-
}}

obdrží:

plody = oranžová
0 = broskev
zelenina = okurka
1 = lilek

PHP-klíč pole s přídavkem prvků "broskev" a "baklažán" je vytvořen postupně od 0, a když zadáte jeho hodnotu se bude rovnat této hodnotě.

Odstranění položek z pole

php odstranit pole

Nejjednodušší způsob, jak odebrat prvek pole PHP během jeho zpracování. V tomto případě, například, jako výsledek provedení cyklu, je zdroj pole je zobrazeno, a vytvořil nový, což je potom zbytečné prvky nejsou zaznamenány.

Je možné jednat jednodušeji. Pokud se použije poslední příklad:

unset ($ aLine [0]) - // odebrat prvek pole PHP

pak bude výsledek:

plody = oranžová
zelenina = okurka
1 = lilek

Varianty manipulačních prvků polí mohou být hodně postaveny. Například pomocí funkcí: implode () a explode () můžete psát pole PHP do jednoho odděleného řetězce a analyzovat ho zpět do jiného pole - jiným oddělovačem.

Chcete-li jednoduše smazat celé pole v PHP, jednoduše zadejte: unset ($ aLine);

To stačí.

Vyhledávání v poli

PHP obsahuje speciální vyhledávací funkce array_key (), array_values ​​(), array_key_exists (), a in_array (), ale předtím, než se rozhodnete je použít, měli byste zvážit provedení vyhledávání v poli PHP samostatně.

php klíč pole

Každý projekt je konkrétní oblast předmětu, vytvořené pole, zvláště když část sémantiky je přenesena do syntaxe a je reprezentována sadou zcela konkrétních, smysluplných klíčů. To vám umožňuje provádět vlastní vyhledávací funkce, které mohou být označeny smysluplně.

V PHP můžete volat funkce, jejichž jméno je definováno během provádění programu. Velmi praktický příklad z knihovny PHPWord, která umožňuje číst a vytvářet dokumenty MS Word:

$ elements = array (`Text`, `Inline`, `TextRun`, `Link`, `PreserveText`, `TextBreak`,
ListItem, ListItemRun, Tabulka, Obraz, Objekt, Poznámka pod čarou,
`Endnote`, `CheckBox`, `TextBox`, `Field`, `Line`);

$ funkce = array ();

pro ($ i = 0- $ i < počet ($ prvky) - $ i ++) {
$ funkce [$ i] = `přidat`. $ prvky [$ i] -
}}

Výsledkem je, že pole funkcí $ obdrží hodnoty pole prvků $, tj. Názvy skutečných funkcí, které pracují se skutečnými prvky dokumentu.

Při volání funkcí $ [4] pro prvky $ [4] získáte ideální vyhledávání a rychlý výsledek.

Třídění položek

Úloha třídění dat je důležitá a PHP nabízí několik funkcí pro toto: sort (), rsort (), asort (), ksort (), ... Vzestupné a sestupné prvky, druhé dvě funkce zachovávají vztah mezi klíči a hodnotami. Někdy má smysl kombinovat hodnoty pole v náhodném pořadí - shuffle ().

hodnota php v poli

Pomocí funkcí PHP pro třídění by nemělo zapomínat, že prvky mohou mít nejen různé typy, ale také zcela přirozený obsah. Především musíte být velmi opatrní při třídění řádků obsahujících ruské písmena, třídění data, stejně jako čísla, která jsou zaznamenána v různých formátech.

php pole v poli

Nejlepší způsob, jak napsat sami ideální řešení, alespoň ve fázi testování skriptu, je ruční třídění. Pomůže to předvídat nepředvídané situace.

Malé matice

S funkcemi implode () a explode () lze pole snadno transformovat do řetězce a vrátit se. To umožňuje ukládat data v kompaktním zobrazení a podle potřeby je nasadit do vhodného stavu.

Pole v řadě otevírá nové možnosti. Například úkol vyhledávání klíčových slov v textu vyžaduje, aby výsledek vyhledávání nebyl opakovaně přidáván.

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

$ aSrc = exploduje (``, $ cSrcLine) -
$ cDstLine = ``;

pro ($ i = 0- $ i < počet ($ aSrc) - $ i ++) {
$ cFind = `[`. $ aSrc [$ i]. `] "-
pokud (! is_integer (strpos ($ cDstLine, $ cFind))) {
$ cDstLine. = $ cFind-
}}
}}
$ aDst = exploduje (`] [`, $ cDstLine) -

$ cOne = implode (`-`, $ aDst);

Výsledkem je, že proměnná $ cOne přijímá pouze ty hodnoty ze zdrojového řetězce, které se tam najdou jednou: "Text-ListItemRun-TextBox-ListItem; Check-Box-CheckBox-poznámka pod čarou".

Ruský jazyk v klíčích a významu

Nedoporučuje se používat syntaktické konstrukce, které se týkají národních kódování. Ruský jazyk, stejně jako všechny ostatní jazyky, jejichž znaky jsou mimo a-z, nezpůsobí problémy v oblasti dat, ale ne v syntaxi kódu. Někdy dokonce i jednoduchý úkol v PHP "k vygenerování pole do tiskárny nebo na obrazovku" povede k "krakozyabram" a častěji jen zastaví skript.

PHP je věrný jazyk a tolerantní k národním kódům, ale je zde spousta situací, kdy je nutné vykonat opakované práce, protože klíčová hodnota se objeví na správném místě a ve správný čas, který nelze rozpoznat.

PHP Syntaxe a jazykové prostředí

Nezapomeňte, že PHP syntaxe je jedna věc, ale syntaxe této syntaxe "se zabývá" s dalšími aplikacemi, s operačním systémem, s možnostmi hardwaru. Existuje mnoho možností, nikdy není možné si představit všechno.

Pravidlo "v kódu je pouze kód a na vstupu, uvnitř a na výstupu jsou nějaké informace" pomůže vyhnout se nepředvídatelným překvapením. Hodnota PHP v poli může být "ruština", ale klíč k němu musí být syntakticky korektní nejen z pozice daného jazyka, ale také z pozice pracovního prostředí.

Sdílet na sociálních sítích:

Podobné
© 2021 nisfarm.ru