PHP5.- Operaciones básicas sobre vectores

A continuación os vamos a describir tres tipos de operaciones básicas sobre vectores en PHP. Estas operaciones serán:

  1. Eliminación de elementos
  2. Búsqueda de elementos
  3. Recuperación aleatoria de elemento
  4. Eliminar elementos de una matriz con PHP

    Para eliminar elementos de una matriz utilizaremos una función que ya hemos visto en temas anteriores, unset(). Esta función nos permite eliminar tanto elemento sueltos como el vector completo, veamos un ejemplo de uso.

    <?php
    $v = array(54,76,89,23,12);
    unset ($v[3]); //eliminará el elemento que ocupa la posición 3
    foreach ($v as $indice=>$contenido)
    	echo "<p>".$indice."--".$contenido."</p>"; //Como puedes observar, no sólo elimina el contenido, también elimina el índice
    ?>
    

    Ejercicios

    1. Elimina las posiciones 0 y 2
    2. Elimina todo el vector (usa unset para todo el vector, sin especificar la posición)
    3. Crea un vector con valores desde 0 hasta 100 (créalo con un for o con la función range), ahora elimina todos los valores superiores a 50

    Buscar elementos en un vector con PHP

    Una de las operaciones más habituales con un vector es buscar determinado contenido. Para ello PHP nos ofrece la función in_array($valor,$vector), que devuelve true si se encuentra el vector o false en caso contrario. Se puede usar un tercer parámetro (true), que en caso de encontrarlo no sólo compara el contenido sino que también compara el tipo.
    No obstante sería mucho más útil que también nos devolviese la posición en la que se encuentra el elemento, por eso es mucho mejor usar la función array_search($valor,$vector) que usa exactamente los mismo parámetros pero en lugar de retornar TRUE retorna la posición del elemento encontrado o FALSE en caso contrario. También disponemos de la función array_key_exists($indice,$vector), que nos dice si un índice existe. Muy útil si usamos unset para borrar.
    Veamos un ejemplo.

    <?php
    $v = array(54,76,89,23,12);
    echo "<p>".in_array(76,$v)."</p>";
    echo "<p>".in_array(76,$v,true)."</p>";
    echo "<p>".in_array(75,$v)."</p>";
    echo "<p>".array_search(76,$v)."</p>";
    echo "<p>".array_key_exists(7,$v)."</p>";
    ?>
    

    Ejercicios

    1. Crea el vector [1,2,3,4,5,6,7,8,9]
    2. Comprueba si existe el 20. Comprueba si existe el 6 y en que posición está
    3. Borra el elemento 3 si existe (usando array_search y unset)
    4. Compueba si existe el indice 2

    Elección aleatoria de un elemento de una matriz

    Disponemos de la función array_rand($vector,$numero), que nos devuelve una posición o numero posiciones aleatorias del vector. Veamos un ejemplo:

    <?php
    $v = array(54,76,89,23,12);
    echo "<p>".array_rand($v)."</p>";
    print_r (array_rand($v,3));
    ?>
    

    Ejercicio

    1. haz un array de imágenes
    2. Muestra imagenes de forma aleatoria para sigue estos consejos:
      • Utiliza un fichero utilidades.php que pinte la cabecera con los parámetros título, descripción, keyword y alguno más si lo crees necesario
      • Tendrá que crear una carpeta (imagenes) con las imágenes
      • En el fichero utilidades.pho también podrás usar algún estilo y pintar aside y footer

    Ejemplo de utilidades.php

    <?php
    function cabecera($title,$des,$key,$parrafo)
    {
    ?>
    <!DOCTYPE html>
    <html lang="es">
    <head>
    <title><?php echo $title;?></title>
    <meta charset="UTF-8">
    <meta name="description" content="<?php echo $des;?>"/>
    <meta name="keywords" content="<?php echo $key;?>"/>
    <meta name="author" content="Juan Luis Mora Blanco" />
    <meta name="robots" content="index,follow,noarchive">
    <link rel="stylesheet" href="s/a.css">
    <link rel="shortcut icon" href="http://www.iluminatia.com.ar/files/u1/marketing-online.jpg" type="image/x-icon" /> 
    </head>
    <body>
    	<div id="a">
    		<header>
    	  	    	<a href="#" title="Inicio"><b><?php echo $title;?></b></a>
    		    	<p><?php echo $parrafo;?></p>
    		</header>
    		<div id="b">
    		     <article>
    <?php
    }
    function aside()
    {
    ?>
    </article>
    			<aside>
    				<h4>Acerca del Autor</h4>
    				<div id="c">
    					<img src="http://0.gravatar.com/avatar/47fed0dce31612de8fc1787a35472127?s=40&d=identicon&r=PG" alt="Juan Luis Mora">
    				</div>				
    			</aside>
    <?php
    }
    function pie()
    {
    ?>
    		</div>
    		<footer>
    			<p>
    	    		Copyright <a href="#">Todos los derechos reservados</a>
    	    		</p>
    	    		
    	    	</footer>
    	</div>
    </html>
    <?php
    }
    ?>
    

    Ejemplo de index.php

    <?php
    require  ("utilidades.php");
    cabecera ("Imagen aleatoria","Mostrar imagenes aleatorias en PHP","PHP,imagenes aleatorias","Ejemplo de imagenes aleatorias en PHP");
    $directorio = "imagenes/";
    // Guardamos en una matriz los nombres de los ficheros que
    // contienen las imágenes de las películas
    $matriz = array("pelicula1.jpg", "pelicula2.jpg", "pelicula3.jpg",
                    "pelicula4.jpg", "pelicula5.jpg", "pelicula6.jpg",
                    "pelicula7.jpg", "pelicula8.jpg", "pelicula9.jpg",
                    "pelicula10.jpg");
    // Obtenemos aleatoriamente 4 claves de la matriz $matriz
    $claves = array_rand($matriz,4);      
    echo "<ul>";          
    for ($i=0;$i<4;$i++)
    {
    ?>
    <li><img width="180" height="250" src="<?php echo $directorio.$matriz[$claves[$i]]; ?>" /></li>
    <?php
    }
    ?>
    </ul>
    <?php
    aside ();
    pie();
    ?>
    

    Originally posted 2011-02-17 19:35:38.

Deja un comentario