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.

  1. Vytvoření Program deklaruje hodnoty a jejich indexy nebo klíče.
  2. Přístup a změna Čte, přidá, odebere nebo upraví konkrétní prvek.
  3. Iterace Cyklus prochází prvky ve zvoleném pořadí.
  4. 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é.

Zavolejte mi

Zavolám vám následující pracovní den mezi 9:00 a 17:00.

Můžete mi také zavolat rovnou.

+420 605 181 728

Nechte mi telefonní číslo a pošlete žádost o zpětné zavolání.

Odesláním souhlasíte se zpracováním údajů pro vyřízení žádosti.