compact / extract în PHP

Construiește un tablou din variabile (compact) sau creează variabile din cheile unui tablou (extract).

Sintaxă
compact($var_name, ...$var_names): array

Ce face compact / extract

compact("nume", "oras") creează tabloul ["nume" => $nume, "oras" => $oras]. Este folosit des pentru a trimite date către un șablon.

extract(array &$array, int $flags = EXTR_OVERWRITE, string $prefix = '') face invers: fiecare cheie devine o variabilă. Returnează numărul de variabile create.

Parametri

Parametru Descriere
$var_name, ...$var_names Numele variabilelor, ca text, fără $. Pot fi date și într-un tablou.

Ce returnează

Un tablou nume => valoare. extract returnează numărul de variabile create.

Exemple

Exemplul 1: Date pentru un șablon cu compact

<?php
$titlu = "Contact";
$autor = "Ana";

print_r(compact("titlu", "autor"));

Rezultat

Array
(
    [titlu] => Contact
    [autor] => Ana
)

Exemplul 2: Variabile din tablou cu extract

<?php
$rand = ["nume" => "Mihai", "oras" => "Cluj"];

$create = extract($rand);
echo "$nume locuiește în $oras ($create variabile create)";

Rezultat

Mihai locuiește în Cluj (2 variabile create)

Exemplul 3: Fără suprascriere, cu EXTR_SKIP

<?php
$rol = "vizitator";
$date = ["rol" => "admin", "nume" => "Ana"];

extract($date, EXTR_SKIP);
echo "$nume are rolul $rol";

Rezultat

Ana are rolul vizitator

Greșeli frecvente

  • Folosești extract($_POST) sau extract($_GET). Un vizitator poate suprascrie orice variabilă din script, inclusiv una care verifică dacă e administrator.
  • Dai la compact numele unei variabile care nu există. Primești avertismentul Undefined variable.

Comenzi înrudite

  • array_combine: Construiește un tablou asociativ din două liste: una cu cheile și una cu valorile.
  • array_column: Extrage o singură coloană dintr-o listă de rânduri (de exemplu toate numele dintr-o listă de utilizatori).
  • isset: Verifică dacă o variabilă există și nu are valoarea null.