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 (1ª forma)

  • Unha das formas para acceder aos valores do array é: $variable_array[clave].
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.


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).