Slovník pojmů
Pole v programování
V tomto pojmu znamená pole datovou strukturu typu array, nikoliv formulářové pole nebo databázový sloupec. Slouží k uložení více hodnot, jejich změně, iteraci a přístupu přes index nebo klíč.
Stručná definice
Kolekce hodnot, ne univerzální typ se stejným chováním.
Pole může držet posloupnost hodnot, vnořená pole nebo asociativní záznamy. U sekvenčních hodnot je běžný přístup přes index a pořadí; konkrétní pravidla pro klíče, délku a odebrání prvku závisí na jazyce.
PHP array je flexibilní ordered map s int nebo string klíči. JavaScript Array je indexovaná kolekce a TypeScript nad ní navíc kontroluje deklarovaný typ prvků ve zdrojovém kódu.
Jaký problém řeší
Drží více souvisejících hodnot v paměti.
Typickým příkladem je kolekce položek objednávky, kterou lze projít v cyklu, rozšířit o novou položku nebo předat dál.
- položky objednávky a jejich množství
- výsledky vyhledávání nebo odpovědi API
- konfigurační hodnoty podle pojmenovaných klíčů
- vnořená data přenesená v JSON
Praktický příklad
Pole položek objednávky v PHP a TypeScriptu
Ukázka pracuje s listem položek a s asociativními klíči uvnitř každé položky. Přidání přes [] připojí další hodnotu na konec současného listu.
unset($items[1]) v PHP nemusí vytvořit znovu souvislé indexy. Pokud business význam vyžaduje list 0 až n−1, je vhodné jej vědomě normalizovat například array_values(), ne předpokládat to automaticky.
TypeScript zápis níže ověřuje tvar položek při vývoji. Nevaliduje však za běhu data z externího JSON; ta musí aplikace ověřit samostatně.
PHP a TypeScript
// PHP
$items = [
['sku' => 'TSHIRT-BLUE-M', 'quantity' => 2, 'unitPriceInCents' => 1_990],
['sku' => 'MUG-WHITE', 'quantity' => 1, 'unitPriceInCents' => 290],
];
$items[] = ['sku' => 'CAP-BLACK', 'quantity' => 1, 'unitPriceInCents' => 790];
$items[1]['quantity'] = 2;
foreach ($items as $item) {
// práce s jednou položkou
}
// TypeScript
type OrderItem = { sku: string; quantity: number; unitPriceInCents: number };
const items: OrderItem[] = [];
items.push({ sku: 'TSHIRT-BLUE-M', quantity: 2, unitPriceInCents: 1_990 });
Jak funguje
Práce s kolekcí hodnot
Pole není databázová tabulka; obvykle je to struktura, se kterou program právě pracuje v paměti.
- Vytvoření Program deklaruje hodnoty a jejich indexy nebo klíče.
- Přístup a změna Čte, přidá, odebere nebo upraví konkrétní prvek.
- Iterace Cyklus prochází prvky ve zvoleném pořadí.
- Výsledek Kolekce nebo odvozená hodnota pokračuje do další operace.
Hlavní části a varianty
Rozdíly mezi PHP, JavaScriptem a TypeScriptem jsou podstatné.
Název array neznamená shodný model ani stejnou runtime kontrolu ve všech jazycích.
PHP array
Je ordered map s int nebo string klíči, proto může fungovat jako list i asociativní mapa; není to klasické pevné pole mnoha jiných jazyků.
JavaScript Array
Je mutovatelný Array objekt, jehož číselné indexy běžně začínají nulou a který má length; libovolný stringový klíč není položka array.
TypeScript pole
Například OrderItem[] kontroluje tvar prvků při vývoji. Typy samy nejsou runtime validací dat z externího JSON.
Objekt, množina, tabulka
Objekt popisuje pojmenované vlastnosti, set unikátnost a databázová tabulka perzistentní relační data; nejsou to zaměnitelné pojmy.
Omezení a časté chyby
Flexibilita vyžaduje přesný význam klíčů a prvků.
Kde pomáhá
- uchovat pořadí a dávku hodnot
- přidávat a iterovat položky bez opakovaného zápisu
- přenášet strukturovaná data mezi vrstvami
Rizika
- záměna indexu a pořadí po odebrání prvku
- neexistující klíč nebo mutace sdílené kolekce
- záměna JavaScript Array s plain objectem či setem
- příliš složitá vnořená pole bez vlastního typu
Praktické použití
Pole je dobré pro kolekci, ne pro každý datový model.
Homogenní kolekce se v TypeScriptu dají vyjádřit například OrderItem[]. PHP array technicky přijme různě typované hodnoty, ale návrh, PHPDoc a statická analýza mohou vyžadovat konzistentní tvar.
JavaScript ani PHP nelze brát jako shodný příklad array. Při přenosu mezi klientem a serverem navíc validujte skutečná data, ne jen jejich deklarovaný TypeScript typ.
Pole je konkrétní kolekce, zatímco datový typ popisuje přípustné hodnoty a proměnná nese konkrétní hodnotu v programu. Když se vnořená array stává obtížně čitelnou nebo se stejná struktura předává přes mnoho vrstev, může být vhodnější pojmenovaný objekt či vlastní typ. Přístup na neexistující klíč však má být vědomě ošetřený, ne nahodilým vedlejším efektem.
Při výběru kolekce je vhodné rozhodnout, zda je důležitější pořadí, jedinečnost, rychlé vyhledání podle klíče nebo pevný model jedné položky. Array dobře poslouží pro seznam položek objednávky, ale nemusí být nejlepší reprezentací každého problému. U veřejného API je navíc potřeba popsat tvar a význam každé hodnoty, aby klienti nemuseli hádat, co který index nebo klíč znamená.
Kontrola změny
Zkontrolujte klíče, pořadí a hranici důvěry.
Kolekce je snadná na vytvoření, ale její business význam se musí udržet při každé změně.
- nepoužívat field jako synonymum pro programátorské pole
- nepředpokládat souvislé PHP klíče po unset
- validovat externí data i při použití TypeScriptu
- nepoužívat for...in pro prvky JavaScript Array
Časté otázky
Pole v různých jazycích
Je PHP array klasické pole?
Ne zcela. PHP array je flexibilní ordered map s celočíselnými nebo řetězcovými klíči.
Jak se liší array a objekt?
Array je kolekce prvků v pořadí, objekt obvykle modeluje pojmenované vlastnosti; v JavaScriptu jsou oba objekty, ale mají jiný účel.
Může TypeScript pole obsahovat libovolné typy?
Záleží na deklaraci. OrderItem[] vyžaduje položky daného tvaru, ale runtime vstup je stále nutné validovat.
Je array databázová tabulka?
Ne. Tabulka je perzistentní relační úložiště, array je datová struktura programu.
Osobní zkušenost
Data v paměti mají být stejně čitelná jako jejich model.
V PHP projektech pracuji s kolekcemi tak, aby tvar položek, klíče i hranice validace zůstaly srozumitelné.