PHP Arrays
Revisión del 15:43 14 oct 2016 de Wiki (discusión | contribuciones) (→Funcións predefinidas relacionadas cos Arrays)
Sumario
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.
- Dita función é: var_dump()
- Nota:Pódese empregar para outros tipos de variables.
- Unha función equivalente á anterior: función print_r
- 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.
Funcións predefinidas relacionadas cos Arrays
- Función list: Asigna variables como se foran arrays.
- 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).