PHP Arrays

De MediaWiki
Ir a la navegación Ir a la búsqueda

Introdución

  • Un array é un tipo estrutura de datos. Dita estrutura se caracteriza por ter un número de elementos variable no que cada valor a gardar está relacionado cun índice que 'apunta' á posición do elemento dentro do array.
  • Podemos identificar un array como unha cómoda con caixóns no que cada caixón se pode identificar có índice do array e dentro de cada caixón teremos gardada a información.
Cabe sinalar que dentro dun caixón poderíamos ter outra cómoda con máis caixóns a súa vez.


Un array pódese crear có construtor da linguaxe array() desta forma:

1 <?php  
2  array(
3     clave  => valor,
4     clave2 => valor2,
5     clave3 => valor3,
6     ...
7     )
8 ?>

Vexamos un exemplo de parte dos ingredientes dunha receita:

 1 <?php  
 2 $ingredientes = array(
 3     0 => "améndoa",
 4     1 => "fresas",
 5 );
 6 
 7 // a partires de PHP 5.4
 8 $ingredientes = [  // Leva corchetes e sen a palabra array
 9     0 => "améndoa",
10     1 => "fresas",
11 ];
12 ?>
  • Como vemos a estrutura que mellor se adapta a gardar información sobre os ingredientes dunha receita é un Array. Non ten sentido ter unha variable por cada un dos ingredientes da receita.
  • Vexamos un exemplo no que as claves sexan cadeas de caracteres:
1 <?php  
2           $persoa = ['nome' => 'Juan Francisco',
3                      'direccion' => 'C/ Rúa de alá nº5',
4                      'telefono' =>'981121212'];
5 
6 ?>

Accedendos aos valores gardados no array (para programadores)

  • Existe unha función que devolve toda a estructura do array en forma de volcado coa que podemos ver o número de elementos, claves e valores.
Nota:Pódese empregar para outros tipos de variables.
  • Vexamos un exemplo:
1 <?php
2 $array = array("un", "dous", "tres", "catro");
3 printf("<br>");
4 var_dump($array);
5 printf("<br>");
6 print_r($array);
7 ?>
O resultado:
1 array(4) { [0]=> string(2) "un" [1]=> string(4) "dous" [2]=> string(4) "tres" [3]=> string(5) "catro" }   // RESULTADO var_dump
2 Array ( [0] => un [1] => dous [2] => tres [3] => catro )                                                  // RESULTADO print_r


Accedendos aos valores gardados no array (1ª forma)

  • Unha das formas para acceder aos valores do array é:
  • $variable_array[clave]
ou
  • $variable_array{clave}
Pódense utilizar corchetes ou chaves indistintamente.
No exemplo anterior:
 1 <?php  
 2 $ingredientes = [  // Leva corchetes e sen a palabra array
 3     0 => "améndoa",
 4     1 => "fresas",
 5 ];
 6 
 7 printf("O primeiro ingrediente do array é: %s<br/>", $ingredientes[0]);
 8 printf("O segundo ingrediente do array é: %s<br/>", $ingredientes[1]);
 9 
10 ?>


  • No caso anterior no que o array tiña como clave unha cadea:
1 <?php  
2          $persoa = ['nome' => 'Juan Francisco',
3                      'direccion' => 'C/ Rúa de alá nº5',
4                      'telefono' =>'981121212'];
5           printf("Datos da persoa:<br/>Nome:%s<br/>Dirección:%s<br/>Teléfono:%s",$persoa['nome'],$persoa['direccion'],$persoa['telefono']);
6 ?>

Declaración dun array: valores claves

  • Como dixemos anteriormente o array ten unha clave coa que facemos referencia aos valores gardados no array.
  • Dita clave pode ser numérica ou cadea e os valores que podemos gardar poden ser de calquera tipo.
  • Se usamos como clave un tipo de dato diferente, PHP fará un 'cast' a o tipo de dato integer ou string (como indicamos antes).
Así:
  • Float: será convertido a un integer quitando a parte decimal.
  • String: se o string é un número válido (por exemplo "8") será convertido a integer.
  • Boolean: será convertido a integer (true = 1; false = 0)
  • null: será convertido a cadea valeira.
  • Se non poñemos clave dará o valor seguinte a última numérica instroducida.


  • Vexamos uns exemplos:
 1 <?php  
 2           $disco = [
 3             1 => '32454KAS12',
 4             'capacidad' => '500GB',
 5             '3500rpm',
 6             'marca' => 'seagate',
 7             3.5 => 'SATA'  
 8           ];
 9 
10           printf("<br>");
11           printf("O primeiro dato é o número de serie=> \$disco[1]:%s => A clave numérica é 1<br/>",$disco[1]);
12           printf("O segundo dato=> \$disco['capacidad']:%s<br/>",$disco['capacidad']);
13           printf("O terceiro dato (velocidade) non leva clave polo que dalle a seguine numérica=> \$disco[2]:%s => A clave numérica é 2<br/>",$disco[2]);
14           printf("O cuarto dato é a marca=> \$disco['marca']:%s<br/>",$disco['marca']);
15           printf("O quinto dato (tipo conector) a clave convírtese de float a integer=> \$disco[3]:%s A clave numérica é 3<br/>",$disco[3]);
16 
17 ?>
O resultado:
1 O primeiro dato é o número de serie=> $disco[1]:32454KAS12 => A clave numérica é 1
2 O segundo dato=> $disco['capacidad']:500GB
3 O terceiro dato (velocidade) non leva clave polo que dalle a seguine numérica=> $disco[2]:3500rpm => A clave numérica é 2
4 O cuarto dato é a marca=> $disco['marca']:seagate
5 O quinto dato (tipo conector) a clave convírtese de float a integer=> $disco[3]:SATA A clave numérica é 3
Como podemos comprobar no exemplo anterior é posible ter un array con claves mixtas (cadea e numérica)
  • Outro exemplo:
1 <?php
2 $array = array("un", "dous", "tres", "catro");
3 printf("%s-%s-%s-%s",$array[0],$array[1],$array[2],$array[3]);
4 ?>
Neste exemplo non asociamos ningunha clave e PHP irá, dende 0, incrementando a clave asociada a cada valor dentro do array.


Eliminando, modificando ou engadindo valores a un array

Eliminar un elemento do Array

  • Para eliminar un elemento do array temos que facer uso da función unset.
1 unset($array[clave]);
Nota: unset pódese utilizar para eliminar calquera variable que teñamos definida.
  • Vexamos un exemplo:
1     <?php
2         $ingredientes = ["améndoa","fresas","azucre","fariña"];
3         print_r($ingredientes);
4         unset($ingredientes[2]);
5         echo '<br />Despois de eliminar o número 2 (empeza en 0):';
6         print_r($ingredientes);
7         
8      ?>
Dará como resultado:
1 Array ( [0] => améndoa 
2         [1] => fresas 
3         [2] => azucre 
4         [3] => fariña )
5 Despois de eliminar o dato con clave 2:
6 Array ( [0] => améndoa 
7         [1] => fresas 
8         [3] => fariña )


Modificar un elemento do array

  • Teremos que saber cal é a súa clave asociada: $array[clave]=novo_valor
  • Vexamos un exemplo:
1     <?php
2         $ingredientes = ["améndoa","fresas","azucre","fariña"];
3         print_r($ingredientes);
4         $ingredientes[2]='mel';
5         echo '<br />Despois de modificar o dato con clave 2:<br />';
6         print_r($ingredientes);
7      ?>
Dará como resultado:
1 Array ( [0] => améndoa [1] => fresas [2] => azucre [3] => fariña )
2 
3 Despois de modificar o dato con clave 2:
4 Array ( [0] => améndoa [1] => fresas [2] => mel [3] => fariña )


Engadir novos elementos ao array

  • Para engadir un novo elemento só temos que facer uso dunha clave que non exista no array ou ben usar os corchetes baleiros para que asigne o seguinte valor numérico de clave.
  • Sería:
  • $array[nova_clave]=novo_valor;
  • $array[]=novo_valor;
A primeira forma permite facer uso de claves numéricas ou de cadea e a segunda forma sempre vai engadir unha clave numérica.
  • Vexamos un exemplo:
1     <?php
2         $ingredientes = ["améndoa","fresas","azucre","fariña"];
3         print_r($ingredientes);
4         $ingredientes[]='ovos';
5         echo '<br />Despois de engadir un novo ingrediente con clave 4:<br />';
6         print_r($ingredientes);
7      ?>
Dará como resultado:
1 Array ( [0] => améndoa [1] => fresas [2] => azucre [3] => fariña )
2 
3 Despois de engadir un novo ingrediente con clave 4:
4 Array ( [0] => améndoa [1] => fresas [2] => azucre [3] => fariña [4] => ovos )
  • Outro exemplo:
1     <?php
2          $persoa = ['nome' => 'Juan Francisco',
3                      'direccion' => 'C/ Rúa de alá nº5',
4                      'telefono' =>'981121212'];
5          print_r($persoa);
6          echo '<br />Despois de engadir un novo dato:<br />';
7          $persoa['idade']=52;
8          print_r($persoa);
9      ?>
Dará como resultado:
1 Array ( [nome] => Juan Francisco [direccion] => C/ Rúa de alá nº5 [telefono] => 981121212 )
2 
3 Despois de engadir un novo dato:
4 Array ( [nome] => Juan Francisco [direccion] => C/ Rúa de alá nº5 [telefono] => 981121212 [idade] => 52 )

Funcións predefinidas relacionadas cos Arrays

Función List

A idea é que partindo dun array poidamos asociar a variables os valores gardados no array dunha forma rápida.
Por exemplo:
1 <?php
2 $array = array("un", "dous", "tres", "catro");
3 
4 ?>
Se eu quero gardar cada elemento do array nunha variable tería que facer:
1 <?php
2           $array = array("un", "dous", "tres", "catro");
3 
4           $var1=$array[0];
5           $var2=$array[1];
6           $var3=$array[2];
7           $var4=$array[3];
8 
9 ?>
Pero usando list se pode facer:
1 <?php
2           $array = array("un", "dous", "tres", "catro");
3           list($var1,$var2,$var3,$var4)=$array;
4 ?>
Incluso se poden 'saltar' elementos do array:
1 <?php
2           $array = array("un", "dous", "tres", "catro");
3           list(,$var2,,$var4)=$array;
4 ?>

Verificando os datos dun formulario

  • Uhna forma rápida de verificar que certos datos dun formulario teñan información sería:
 1 <?php  
 2 // Campos obrigatorios
 3 $campos_obrigatorios = array('txtNome', 'txtEmail');
 4 
 5 // Comprobamos que os campos obrigatorios teñan datos
 6 $erro = false;
 7 foreach ($campos_obrigatorios as $campo) {
 8   if (empty($_POST[$campo])) $erro = true;
 9 }
10 
11 if ($erro) {
12   // Non existe algún dos campos obrigatorios
13 }




-- Ángel D. Fernández González -- (2016).