Desarrollo de aplicaciones web con PHP y MySQL

Vectores en PHP

Sergio Sáez y José Luis Poza

E.T.S. de Ingeniería Informática

Índice

¿Qué es un vector?

Vectores indexados numéricamente

Vectores indexados numéricamente (cont.)


<?php function count(array $vector): int ?>

Vectores asociativos

Recorriendo un vector

<?php function reset (array $vector?>
<?php function end (array $vector?>

Recorriendo un vector (cont.)

<?php function next (array $vector?>
<?php function prev (array $vector?>
<?php function current (array $vector?>
<?php function key (array $vector?>

No son funciones seguras si el vector contiene elementos cuyo valor se evalúa a false.

Recorriendo un vector (cont.)

<?php foreach(expresion_array as $valorsentencia?>
<?php foreach(expresion_array as $clave => $valorsentencia?>

Recorriendo un vector (cont.)

Otras formas de recorrer un vector

<?php
  $precios
= array("Frenos" => 150,
                  
"Aceite" => 10,
                  
"Ruedas" => 100);

  while (list(
$clave$valor)= each($precios)) {
    echo 
"$clave$valor<br>\n";
  } 
// endwhile
?>

HTML

Frenos: 150<br>
Aceite: 10<br>
Ruedas: 100<br>

<?php
  $precios
= ["Frenos" => 150"Aceite" => 10"Ruedas" => 100];

  while (
$itemeach($precios)) {
    echo 
$item["key"] . ": ";
    echo 
$item["value"] . "<br>\n";
  } 
// endwhile
?>

Otras formas de recorrer un vector (cont.)

<?php function each (array $vector) : array ?>
<?php list (mixed, ...) ?>

Recorriendo vectores

Recorriendo vectores (cont.)

Comprobaciones y borrados

 <?php
 $cervezas 
= array("Heineken" => 4"Mahou" => 7,
                   
"Aguila" => 12"Estrella" => 9);
 if (isset(
$cervezas["Voll-Damm"])) {
   echo 
"Ponme un par de Voll-Damms";
 } else {
   echo 
"Cómo que no hay Voll-Damm? Bueno, pues un par de Mahous";
 }
 unset(
$cervezas["Mahou"]); // Borra el elemento "Mahou"
 
if (array_key_exists("Mahou"$cervezas)) {
   echo 
"Mmmmhhh!";
 } else {
   echo 
"Que tampoco hay Mahou. Pues nada ... que sea una gaseosa";
 }
 
?>

Comprobaciones y borrados (cont.)

 <?php
 $cervezas 
= array("Heineken""Mahou""Aguila""Estrella");
 if (
in_array("Voll-Damm"$cervezas)) {
   echo 
"Ponme un par de Voll-Damms";
 } else {
   echo 
"Cómo que no hay Voll-Damm? Bueno, pues un par de Mahous";
 }
 
$clavearray_search("Mahou"$cervezas); // Busca el elemento "Mahou"
 
unset($cervezas[$clave]); // Borra el elemento "Mahou"
 
if (in_array("Mahou"$cervezas)) {
   echo 
"Mmmmhhh!";
 } else {
   echo 
"Que tampoco hay Mahou. Pues nada ... que sea una gaseosa";
 }
 
?>

Estructuras de datos en PHP

  • Vectores homogeneos
    int vector[5]= {
      1, 3, 5, 7, 9
    };
    <?php
     $vector
    = array(13579);
    ?>
  • Estructuras de datos
    struct {
      char * nombre;
      char * apellidos;
      int	 a_nacim;
    } persona=
      {"Sergio", "Saez Barona", 1970};
    <?php
    $persona
    = array(
        
    "nombre" => "Sergio",
        
    "apellidos" => "Saez Barona",
        
    "a_nacim" => 1970);
    ?>
  • El vector como una pila y/o una cola
array_push
Añade un elemento al final del vector.
array_pop
Extrae el último elemento del vector.
array_shift
Extrae el primer elemento del vector desplazando las claves.

Vectores predefinidos


$_SERVER: Información sobre el servidor.

$_ENV: Información sobre el entorno de ejecucíón del interprete.

$_GET: Contiene las variables de los formularios enviados mediante el método "GET".

$_POST: Idem, pero mediante el método "POST".

$_COOKIE: Contiene las galletas enviadas desde el cliente.

$_FILES: Información sobre los ficheros recibidos.

$_REQUEST = $_COOKIE + $_GET + $_POST + $_FILES.

$_SESSION: Contiene las variables de la sesión actual.

Vectores multidimensionales

Ordenación de vectores


<?php void sort (array vector); ?>
<?php
  $productos
= ["Frenos""Aceite""Ruedas"];
  
sort($productos);
  
print_r($productos);
?>
Array
(
    [0] => Aceite
    [1] => Frenos
    [2] => Ruedas
)


<?php void rsort (array vector); ?>

Ordenación de vectores (cont.)


<?php void asort (array vector); ?>
<?php $precios= array("Frenos" => 150,
                      
"Aceite" => 10,
                      
"Ruedas" => 100);
  
asort($precios);
  
print_r($precios);
?>
Array
(
    [Aceite] => 10
    [Ruedas] => 100
    [Frenos] => 150
)


<?php void arsort (array vector); ?>

Ordenación de vectores (cont.)


<?php void ksort (array vector); ?>
<?php $precios= array("Frenos" => 150,
                      
"Aceite" => 10,
                      
"Ruedas" => 100);
  
ksort($precios);
  
print_r($precios);
?>
Array
(
    [Aceite] => 10
    [Frenos] => 150
    [Ruedas] => 100
)


<?php void krsort (array vector); ?>

Convertir un vector a escalares

<?php void extract (array vector_vars [, int tipo_extraccion
                 
[, string prefijo]]); ?>

Convertir un vector a escalares (cont.)

<?php
$precios
= array("Frenos" => 150,
                
"Aceite" => 10,
                
"Ruedas" => 100);

extract($preciosEXTR_OVERWRITE);
var_dump($Frenos); var_dump($Aceite); var_dump($Ruedas);
?>
int(150) int(10) int(100)
<?php
extract
($_GET,EXTR_PREFIX_ALL"f");

/* ó */

extract($_POST,EXTR_PREFIX_ALL"f");
?>