Diferencia entre revisiones de «PHP Arrays»

De MediaWiki
Ir a la navegación Ir a la búsqueda
Línea 21: Línea 21:
  
 
Vexamos un exemplo de parte dos ingredientes dunha receita:
 
Vexamos un exemplo de parte dos ingredientes dunha receita:
 +
::<syntaxhighlight lang="php" line enclose="div" highlight="" >
 
<?php   
 
<?php   
 
$ingredientes = array(
 
$ingredientes = array(
Línea 28: Línea 29:
  
 
// a partires de PHP 5.4
 
// a partires de PHP 5.4
−
$ingredientes = [
+
$ingredientes = [ // Leva corchetes e sen a palabra array
 
     0 => "améndoa",
 
     0 => "améndoa",
−
     1 => "améndoa",
+
     1 => "fresas",
 +
];
 +
?>
 +
</syntaxhighlight>
 +
 
 +
* 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:
 +
 
 +
::<syntaxhighlight lang="php" line enclose="div" highlight="" >
 +
<?php 
 +
          $persoa = ['nome' => 'Juan Francisco',
 +
                    'direccion' => 'C/ Rúa de alá nº5',
 +
                    'telefono' =>'981121212'];
 +
 
 +
?>
 +
</syntaxhighlight>
 +
 
 +
 
 +
 
 +
== Accedendos aos valores gardados no array (1ª forma) ==
 +
 
 +
* Unha das formas para acceder aos valores do array é: $variable_array[clave].
 +
: No exemplo anterior:
 +
::<syntaxhighlight lang="php" line enclose="div" highlight="" >
 +
<?php 
 +
$ingredientes = [  // Leva corchetes e sen a palabra array
 +
    0 => "améndoa",
 +
    1 => "fresas",
 
];
 
];
 +
 +
printf("O primeiro ingrediente do array é: %s<br/>", $ingredientes[0]);
 +
printf("O segundo ingrediente do array é: %s<br/>", $ingredientes[1]);
 +
 
?>
 
?>
 +
</syntaxhighlight>
  
  
−
* 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.
+
* No caso anterior no que o array tiña como clave unha cadea:
 +
::<syntaxhighlight lang="php" line enclose="div" highlight="" >
 +
<?php 
 +
        $persoa = ['nome' => 'Juan Francisco',
 +
                    'direccion' => 'C/ Rúa de alá nº5',
 +
                    'telefono' =>'981121212'];
 +
          printf("Datos da persoa:<br/>Nome:%s<br/>Dirección:%s<br/>Teléfono:%s",$persoa['nome'],$persoa['direccion'],$persoa['telefono']);
 +
?>
 +
</syntaxhighlight>
  
  
Línea 43: Línea 85:
 
* Dita <u>clave pode ser '''numérica''' ou '''cadea''' e os valores que podemos gardar poden ser de calquera tipo.
 
* Dita <u>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.
+
* 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í:
 
: Así:
 
::* Float: será convertido a un integer quitando a parte decimal.
 
::* Float: será convertido a un integer quitando a parte decimal.
Línea 49: Línea 91:
 
::* Boolean: será convertido a integer (true = 1; false = 0)
 
::* Boolean: será convertido a integer (true = 1; false = 0)
 
::* null: será convertido a cadea valeira.
 
::* null: será convertido a cadea valeira.
 +
 +
* Se non poñemos clave dará o valor seguinte a última numérica instroducida.
 +
  
 
* Vexamos uns exemplos:
 
* Vexamos uns exemplos:
 +
 +
::<syntaxhighlight lang="php" line enclose="div" highlight="" >
 +
<?php 
 +
          $disco = [
 +
            1 => '32454KAS12',
 +
            'capacidad' => '500GB',
 +
            '3500rpm',
 +
            'marca' => 'seagate',
 +
            3.5 => 'SATA' 
 +
          ];
 +
 +
          printf("<br>");
 +
          printf("O primeiro dato é o número de serie=> \$disco[1]:%s => A clave numérica é 1<br/>",$disco[1]);
 +
          printf("O segundo dato=> \$disco['capacidad']:%s<br/>",$disco['capacidad']);
 +
          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]);
 +
          printf("O cuarto dato é a marca=> \$disco['marca']:%s<br/>",$disco['marca']);
 +
          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]);
 +
 +
?>
 +
</syntaxhighlight>
 +
 +
: O resultado:
 +
::<syntaxhighlight lang="html" line enclose="div" highlight="" >
 +
O primeiro dato é o número de serie=> $disco[1]:32454KAS12 => A clave numérica é 1
 +
O segundo dato=> $disco['capacidad']:500GB
 +
O terceiro dato (velocidade) non leva clave polo que dalle a seguine numérica=> $disco[2]:3500rpm => A clave numérica é 2
 +
O cuarto dato é a marca=> $disco['marca']:seagate
 +
O quinto dato (tipo conector) a clave convírtese de float a integer=> $disco[3]:SATA A clave numérica é 3
 +
</syntaxhighlight>
 +
 +
: Como podemos comprobar no exemplo anterior é posible ter un array con claves mixtas (cadea e numérica)
 +
 +
* Outro exemplo:
 +
::<syntaxhighlight lang="php" line enclose="div" highlight="" >
 +
<?php
 +
$array = array("un", "dous", "tres", "catro");
 +
printf("%s-%s-%s-%s",$array[0],$array[1],$array[2],$array[3]);
 +
?>
 +
</syntaxhighlight>
 +
 +
: Neste exemplo non asociamos ningunha clave e PHP irá, dende 0, incrementando a clave asociada a cada valor dentro do array.
  
  

Revisión del 15:17 14 oct 2016

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