PHP - Tablouri multidimensionale
Când elementele unui tablou sunt ele însele tablouri, fie unul, fie mai multe, ai un tablou multidimensional.
PHP îți permite să le imbrici pe două, trei, patru, cinci niveluri sau chiar mai mult. În practică însă, majorității oamenilor le este greu să gestioneze ceva ce depășește trei niveluri.
PHP - Tablouri bidimensionale
Un tablou bidimensional este pur și simplu un tablou ale cărui elemente sunt tablouri. Adaugă încă un strat, astfel încât tablourile interioare să conțină la rândul lor tablouri, și obții un tablou tridimensional.
Această formă se potrivește datelor organizate pe rânduri și coloane. Iată cum arată:
Accesarea elementelor unui tablou bidimensional
Pentru a citi o valoare din $cars ai nevoie de doi indici, primul pentru rând și al doilea pentru coloană:
Ieșire: script PHP
<?php
$cars = array (
array("Volvo", 22, 18),
array("BMW", 15, 13),
array("Saab", 5, 2),
array("Land Rover", 17, 15)
);
echo $cars[0][0].": În stoc: ".$cars[0][1].", vândute: ".$cars[0][2].".<br>";
echo $cars[1][0].": În stoc: ".$cars[1][1].", vândute: ".$cars[1][2].".<br>";
echo $cars[2][0].": În stoc: ".$cars[2][1].", vândute: ".$cars[2][2].".<br>";
echo $cars[3][0].": În stoc: ".$cars[3][1].", vândute: ".$cars[3][2].".<br>";
?>
Definirea unui tablou bidimensional
Fiecare tablou interior este un rând dintr-un tabel, cu marca, numărul de bucăți în stoc și numărul de bucăți vândute:
<?php
$cars = array (
array("Volvo", 22, 18),
array("BMW", 15, 13),
array("Saab", 5, 2),
array("Land Rover", 17, 15)
);
?>
PHP - Parcurgerea tablourilor multidimensionale
Pentru a parcurge un tablou multidimensional ai nevoie de o buclă for sau foreach.
Numărul de dimensiuni îți spune câți indici sunt necesari pentru a ajunge la un singur element:
- Două dimensiuni înseamnă doi indici
- Trei dimensiuni înseamnă trei indici
Parcurgere cu bucle for imbricate
O buclă for imbricată în alta vizitează fiecare element din $cars. Cea exterioară trece prin rânduri, cea interioară prin coloane, iar fiecare element este accesat tot cu ambii indici:
Ieșire: script PHP
<?php
$cars = array (
array("Volvo", 22, 18),
array("BMW", 15, 13),
array("Saab", 5, 2),
array("Land Rover", 17, 15)
);
for ($row = 0; $row < 4; $row++) {
echo "<p><b>Rândul numărul $row</b></p>";
echo "<ul>";
for ($col = 0; $col < 3; $col++) {
echo "<li>".$cars[$row][$col]."</li>";
}
echo "</ul>";
}
?>
Parcurgere cu bucle foreach imbricate
Buclele foreach imbricate pot face același lucru fără niciun număr de index. De data aceasta, valorile sunt afișate sub forma unui tabel HTML:
Ieșire: script PHP
<?php
$cars = array (
array("Volvo", 22, 18),
array("BMW", 15, 13),
array("Saab", 5, 2),
array("Land Rover", 17, 15)
);
echo "<table>";
echo "<tr><th>Marcă</th><th>Stoc</th><th>Vândute</th></tr>";
foreach ($cars as $row) {
echo "<tr>";
foreach ($row as $cell) {
echo "<td>" . $cell . "</td>";
}
echo "</tr>";
}
echo "</table>";
?>