7. Funcions aplicables als vectors
Índex
La funció foreach()
Podem fer la lectura exhaustiva de tots els termes d'un vector sense necessitat d'esmentar-ne explícitament cada un dels termes. Això es fa amb la funció foreach():
- foreach($nom_del_vector as $valor){
- instruccions amb $valor
- }
En el cas dels vectors associatius, tenim
- foreach($nom_del_vector as $clau => $valor){
- instruccions amb $clau i $valor
- }
Les variables $clau i $valor són anomenades lliurement, i recullen el contingut de la clau i del valor de cada un dels termes del vector.
- Document inicial, sense codi PHP, dotat d'un formulari.
- <?php
- echo "<p style='text-decoration: underline'>Les teves aficions</p>";
- echo "<p>";
- foreach($_POST as $clau => $valor){ // Lectura exhaustiva de les dades
- if ($clau == "n") { $text_clau = "Nom"; } // Inici de la transformació de les claus en textos complets
- if ($clau == "mu") { $text_clau = "Música"; }
- if ($clau == "ci") { $text_clau = "Cinema"; }
- if ($clau == "es") { $text_clau = "Esport"; } // Final ídem
- echo $text_clau . ": " . $valor . "<br />"; // Forma interpretable per (X)HTML
- }
- echo "</p>";
- ?>
Vegeu-ne el resultat
Les funcions count() i isset()
La funció count() - i la seva equivalent sizeof() - ens retornen el nombre de termes d'un vector:
- $n = count(nom_del_vector);
La funció isset() comprova si una variable existeix o no, i retorna els valors true o false:
- if (isset(variable)){ ... }
on la variable tant pot ésser individual com el membre d'un vector.
- Document inicial, sense codi PHP, dotat de dos formularis; l'usuari pot triar entre l'un i l'altre.
- <p> </p>
-
- <?php
- $n = count($_POST); // Compta els termes de $_POST
- if ($n == "3"){ // Si procedeix del segon formulari, n'hi ha 3
- echo "<p><strong>Hem rebut les teves dades amb el correu electrònic.</strong></p>";
- }else{ // Si procedeix del primer formulari, n'hi ha 4
- echo "<p><strong>Hem rebut les teves dades amb l'adreça postal.</strong></p>";
- }
- ?>
Vegeu-ne el resultat
Cal notar que aquestes funcions donen compte del nombre de termes d'un vector, però no ens diuen res sobre si aquests tenen valor o són NULL. Podem assegurar-nos-en així:
- if ($a == NULL) {
- ...
- }else{
- ...
- }
La funció list()
Donat un vector $vector, podem transferir-ne els termes un a un a variables independents mitjançant una sèrie d'instruccions d'assignació
- $a = $vector[0];
- $b = $vector[1];
- $c = $vector[2];
- ...
Però la mateixa tasca es pot fer molt més simplement amb la funció list():
- list($a,$b,$c...) = $vector;
Aquesta operació només és possible amb vectors d'índex numèric, no amb vectors associatius.
- <p> </p>
-
- <?php
- $dades = array("cireres", "dolces", "vermelles"); // Dades en un vector
- list($fruita,$gust,$color) = $dades; // Passen a varibles independents
- echo "<p><strong>Les $fruita són $gust i $color.</strong></p>";
- ?>
Vegeu-ne el resultat
Les funcions sort() i afins
L'ordenació d'un vector es duu a terme amb la funció sort(). Aquesta funció assigna noves claus als elements; les anteriors desapareixen.
Aquesta funció té diverses variants; entre aquestes:
- rsort(): ordena en sentit invers.
- natsort(): té en compte el valor numèric de les seqüències de nombres (vg.: img7 va davant img11.
- natcasesort(): com l'anterior, i a més no distingeix entre majúscules i minúscules.
- Document inicial, sense codi PHP, dotat d'un formulari.
- <p> </p>
- <?php
- $noms = array($_POST['n1'], $_POST['n2'], $_POST['n3'], $_POST['n4'], $_POST['n5']); // Recull els valors
- sort($noms); // Els ordena
- echo "<p>Els teus millors amics són:</p>";
- echo "<p style='margin-left: 100px'>";
- foreach ($noms as $nom){ // En fa la lectura exhaustiva
- echo "<br />" . $nom; // Els presenta
- }
- echo "</p>";
- ?>
Vegeu-ne el resultat