Indexed Arrays în PHP
Un indexed array (array indexat) este un array în care fiecare element are un index numeric, începând de la 0. Acest tip de array este util atunci când ordinea elementelor contează și vrei să le accesezi rapid prin poziție.
Crearea unui Indexed Array
<?php
$fructe = ["mere", "pere", "banane"];
?>
Accesarea elementelor
<?php
echo $fructe[0]; // afișează "mere"
echo $fructe[2]; // afișează "banane"
?>
Adăugarea unui element nou
<?php
$fructe[] = "portocale"; // adaugă la finalul array-ului
?>
Parcurgerea unui Indexed Array
<?php
foreach ($fructe as $fruct) {
echo "Îmi place să mănânc $fruct <br>";
}
?>
Indexed arrays sunt baza pentru multe operații în PHP și servesc drept punct de plecare pentru arrays asociative sau multidimensionale.
Arrays asociative în PHP
Un associative array este un array unde elementele sunt stocate folosind chei personalizate în loc de indecși numerici. Acest lucru este util atunci când vrei să identifici valorile printr-un nume descriptiv în loc de poziția lor.
Crearea unui associative array
<?php
$persoana = [
"nume" => "Ion",
"varsta" => 30,
"oras" => "Bucuresti"
];
var_dump($persoana);
?>
Accesarea valorilor
<?php
echo "Numele este: " . $persoana["nume"] . "<br>";
echo "Varsta este: " . $persoana["varsta"] . "<br>";
echo "Orasul este: " . $persoana["oras"] . "<br>";
?>
Adăugarea și modificarea elementelor
<?php
// Adăugăm o cheie nouă
$persoana["profesie"] = "Programator";
// Modificăm o valoare existentă
$persoana["varsta"] = 31;
var_dump($persoana);
?>
Parcurgerea unui associative array
<?php
foreach ($persoana as $cheie => $valoare) {
echo "$cheie : $valoare <br>";
}
?>
Associative arrays sunt foarte utile pentru stocarea datelor cu structură clară, cum ar fi profiluri de utilizatori, setări de aplicații sau orice date unde numele câmpurilor contează mai mult decât poziția.
Exemplu practic: afișarea unui tabel HTML din array-uri
<?php
$utilizatori = [
[
"nume" => "Ion Popescu",
"varsta" => 28,
"oras" => "Bucuresti"
],
[
"nume" => "Maria Ionescu",
"varsta" => 25,
"oras" => "Cluj-Napoca"
],
[
"nume" => "Andrei Vasilescu",
"varsta" => 32,
"oras" => "Timisoara"
]
];
?>
<?php
echo '<table border="1" cellpadding="5">';
echo '<tr><th>Nume</th><th>Varsta</th><th>Oras</th></tr>';
foreach ($utilizatori as $user) {
echo '<tr>';
echo '<td>' . htmlspecialchars($user["nume"]) . '</td>';
echo '<td>' . htmlspecialchars($user["varsta"]) . '</td>';
echo '<td>' . htmlspecialchars($user["oras"]) . '</td>';
echo '</tr>';
}
echo '</table>';
?>
În acest exemplu:
- Avem un array multidimensional unde fiecare element este un associative array cu informații despre un utilizator.
- Folosim
foreachpentru a parcurge fiecare utilizator. - Fiecare utilizator este afișat într-un rând al tabelului HTML.
<?php
// Definim array-ul multidimensional
$utilizatori = [
[
"nume" => "Ion Popescu",
"varsta" => 28,
"oras" => "Bucuresti"
],
[
"nume" => "Maria Ionescu",
"varsta" => 25,
"oras" => "Cluj-Napoca"
],
[
"nume" => "Andrei Vasilescu",
"varsta" => 32,
"oras" => "Timisoara"
]
];
// Afișăm într-un tabel HTML
echo '<table border="1" cellpadding="5">';
echo '<tr><th>Nume</th><th>Varsta</th><th>Oras</th></tr>';
foreach ($utilizatori as $user) {
echo '<tr>';
echo '<td>' . htmlspecialchars($user["nume"]) . '</td>';
echo '<td>' . htmlspecialchars($user["varsta"]) . '</td>';
echo '<td>' . htmlspecialchars($user["oras"]) . '</td>';
echo '</tr>';
}
echo '</table>';
?>
Astfel, putem combina indexarea numerică a array-ului principal cu cheile descriptive din array-urile interne, făcând codul clar și ușor de întreținut.
Multidimensional Arrays în PHP
Un array multidimensional este un array care conține unul sau mai multe array-uri ca elemente. Este util atunci când vrem să stocăm și să organizăm date complexe, de exemplu tabele cu utilizatori, produse sau seturi de valori.
Exemplu practic: tabel cu note elevi
Definim un array multidimensional unde fiecare elev are mai multe note:
<?php
$elevi = [
"Ion" => ["Matematica" => 9, "Romana" => 10, "Informatica" => 10],
"Maria" => ["Matematica" => 8, "Romana" => 9, "Informatica" => 9],
"Andrei" => ["Matematica" => 10, "Romana" => 8, "Informatica" => 10]
];
// Afișăm tabel HTML
echo '<table border="1" cellpadding="5">';
echo '<tr><th>Nume</th><th>Matematica</th><th>Romana</th><th>Informatica</th></tr>';
foreach ($elevi as $nume => $note) {
echo '<tr>';
echo '<td>' . htmlspecialchars($nume) . '</td>';
echo '<td>' . htmlspecialchars($note["Matematica"]) . '</td>';
echo '<td>' . htmlspecialchars($note["Romana"]) . '</td>';
echo '<td>' . htmlspecialchars($note["Informatica"]) . '</td>';
echo '</tr>';
}
echo '</table>';
?>
Acest exemplu arată cum putem stoca mai multe valori pentru fiecare element al array-ului și cum putem itera prin toate valorile pentru afișare.
<?php
$elevi = [
"Ion" => ["Matematica" => 9, "Romana" => 10, "Informatica" => 10],
"Maria" => ["Matematica" => 8, "Romana" => 9, "Informatica" => 9],
"Andrei" => ["Matematica" => 10, "Romana" => 8, "Informatica" => 10]
];
// Afișăm tabel HTML
echo '<table border="1" cellpadding="5">';
echo '<tr><th>Nume</th><th>Matematica</th><th>Romana</th><th>Informatica</th></tr>';
foreach ($elevi as $nume => $note) {
echo '<tr>';
echo '<td>' . htmlspecialchars($nume) . '</td>';
echo '<td>' . htmlspecialchars($note["Matematica"]) . '</td>';
echo '<td>' . htmlspecialchars($note["Romana"]) . '</td>';
echo '<td>' . htmlspecialchars($note["Informatica"]) . '</td>';
echo '</tr>';
}
echo '</table>';
?>
Funcții utile pentru array-uri în PHP
PHP oferă mai multe funcții încorporate pentru a manipula array-urile rapid și eficient. Cele mai folosite
sunt: array_map, array_filter și array_merge.
1. array_map - aplică o funcție fiecărui element
Exemplu: creștem fiecare notă cu 1 punct:
<?php
$note = [8, 9, 10, 7];
$note_majorate = array_map(function($nota) {
return $nota + 1;
}, $note);
print_r($note_majorate); // Output: [9, 10, 11, 8]
?>
2. array_filter - filtrează elementele unui array
Exemplu: păstrăm doar notele mai mari sau egale cu 9:
<?php
$note = [8, 9, 10, 7];
$note_bune = array_filter($note, function($nota) {
return $nota >= 9;
});
print_r($note_bune); // Output: [9, 10]
?>
3. array_merge - combină două sau mai multe array-uri
Exemplu: combinăm două liste de elevi:
<?php
$grupa1 = ["Ion", "Maria"];
$grupa2 = ["Andrei", "Elena"];
$toata_clasa = array_merge($grupa1, $grupa2);
print_r($toata_clasa); // Output: ["Ion", "Maria", "Andrei", "Elena"]
?>
Aceste funcții fac manipularea array-urilor mult mai rapidă și codul mai curat. Pot fi folosite și împreună cu array-uri multidimensionale pentru procesarea datelor complexe.
Conversie JSON în PHP
JSON (JavaScript Object Notation) este un format foarte folosit pentru schimbul de date între server și
client. PHP oferă două funcții principale: json_encode (convertim array sau obiect în JSON) și
json_decode (convertim JSON în array sau obiect PHP).
1. json_encode - transformăm array-ul în JSON
<?php
$utilizatori = [
["nume" => "Ion", "varsta" => 25],
["nume" => "Maria", "varsta" => 22]
];
$json = json_encode($utilizatori);
echo $json;
// Output: [{"nume":"Ion","varsta":25},{"nume":"Maria","varsta":22}]
?>
2. json_decode - transformăm JSON-ul în array sau obiect
Exemplu: convertim JSON-ul în array asociativ:
<?php
$json = '[{"nume":"Ion","varsta":25},{"nume":"Maria","varsta":22}]';
$utilizatori = json_decode($json, true); // true => array asociativ
print_r($utilizatori);
/* Output:
Array
(
[0] => Array
(
[nume] => Ion
[varsta] => 25
)
[1] => Array
(
[nume] => Maria
[varsta] => 22
)
)
*/
?>
De ce folosim JSON în PHP?
- Pentru a trimite date de la server la client (de ex. aplicații web cu JavaScript).
- Pentru a stoca și încărca configurații sau date complexe în fișiere.
- Este format standard, ușor de citit și compatibil cu majoritatea limbajelor de programare.
Exemplu practic - JSON în PHP
Să presupunem că avem o aplicație unde vrem să trimitem date despre utilizatori către un frontend JavaScript sau să le salvăm într-un fișier JSON. Vom vedea cum să transformăm un array PHP în JSON și cum să îl citim înapoi.
1. Crearea și conversia unui array în JSON
<?php
$utilizatori = [
["nume" => "Ion", "email" => "ion@example.com", "varsta" => 25],
["nume" => "Maria", "email" => "maria@example.com", "varsta" => 22],
["nume" => "Alex", "email" => "alex@example.com", "varsta" => 30]
];
// Convertim array-ul în JSON
$json = json_encode($utilizatori);
echo "<h4>JSON generat:</h4>";
echo "<pre>$json</pre>";
?>
2. Citirea unui JSON și utilizarea lui în PHP
<?php
// Să presupunem că $json vine dintr-un fișier sau de la API
$json = '[{"nume":"Ion","email":"ion@example.com","varsta":25},{"nume":"Maria","email":"maria@example.com","varsta":22},{"nume":"Alex","email":"alex@example.com","varsta":30}]';
// Transformăm JSON-ul în array asociativ
$utilizatori = json_decode($json, true);
echo "<h4>Lista utilizatorilor:</h4>";
echo "<ul>";
foreach ($utilizatori as $user) {
echo "<li>" . $user['nume'] . " (" . $user['email'] . ") - " . $user['varsta'] . " ani</li>";
}
echo "</ul>";
?>
<?php
// Să presupunem că $json vine dintr-un fișier sau de la API
$json = '[{"nume":"Ion","email":"ion@example.com","varsta":25},{"nume":"Maria","email":"maria@example.com","varsta":22},{"nume":"Alex","email":"alex@example.com","varsta":30}]';
// Transformăm JSON-ul în array asociativ
$utilizatori = json_decode($json, true);
echo "<h4>Lista utilizatorilor:</h4>";
echo "<ul>";
foreach ($utilizatori as $user) {
echo "<li>" . $user['nume'] . " (" . $user['email'] . ") - " . $user['varsta'] . " ani</li>";
}
echo "</ul>";
?>
3. Exemple concrete de utilizare JSON
- Trimitem date despre utilizatori către un frontend JavaScript pentru a afișa o listă dinamică.
- Salvăm configurații ale aplicației într-un fișier JSON pentru a fi ușor editabile și citite ulterior.
- Schimbăm date între servere sau API-uri folosind JSON ca format standard.
- Exportăm sau importăm date complexe fără a depinde de structuri de baze de date relaționale.
🧠 Quiz - Arrays & Structuri de date în PHP