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)sauextract($_GET). Un vizitator poate suprascrie orice variabilă din script, inclusiv una care verifică dacă e administrator. - Dai la
compactnumele unei variabile care nu există. Primești avertismentulUndefined 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.