Funciones Array (V)

Funciones de búsqueda en arrays:

in_array()

array_search()

array_key_exists()

Ejemplos:

 $tabla=range("a","j");
 
 if (in_array("b",$tabla)){
 echo "Está la b<br/>";
 }
 if (in_array("w",$tabla)){
 echo "Está la w<br/>";
 }
 
 $pos= array_search("b", $tabla);
 echo "|".$pos."|<br/>";
 $pos= array_search("w", $tabla);
 echo "|".$pos."|<br/>";
 
 $asociativa=array("a"=>1,"b"=>2,"c"=>3,"d"=>4,);
 $pos= array_search(3, $asociativa);
 echo "|".$pos."|<br/>";
 
 if (array_key_exists("d",$asociativa)){
 echo "Existe la clave d<br/>";
 }

Ejercicio añadir nombres a variable de sesión


<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<form method="get">
Nombre:
<input type="text" name="nombre">
<input type="submit">
<input type="submit" name="reset" value="reset">
</form>
<?php
session_start();
$nombre = filter_input(INPUT_GET, "nombre");
$reset = filter_input(INPUT_GET, "reset");
$borrar = filter_input(INPUT_GET, "borrar");
if (is_numeric($borrar)){
//unset($_SESSION['lista'][$borrar]);
array_splice($_SESSION['lista'],$borrar,1);

}
if (empty($reset)) {
if (!empty($nombre)) {
$_SESSION['lista'][] = $nombre;
}
foreach ($_SESSION['lista'] as $c=>$elemento) {
echo $elemento." |<small><a href='?borrar=$c'>Borrar</a></small> |<br>";
}
} else {
$_SESSION['lista'] = [];
}
?>
</body>
</html>

Lo mismo con form

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <form method="get">
            Nombre:
            <input type="text" name="nombre">
            <input type="submit">
            <input type="submit" name="reset" value="reset">
        </form>
        <?php
        session_start();
        $nombre = filter_input(INPUT_GET, "nombre");
        $reset = filter_input(INPUT_GET, "reset");
        $borrar = filter_input(INPUT_POST, "borrar");
        if (is_numeric($borrar)) {
            //unset($_SESSION['lista'][$borrar]);
            array_splice($_SESSION['lista'], $borrar, 1);
        }
        if (empty($reset)) {
            if (!empty($nombre)) {
                $_SESSION['lista'][] = $nombre;
            }
            foreach ($_SESSION['lista'] as $c => $elemento) {
                ?>
                <form method="post" action="<?=$_SERVER['PHP_SELF']?>"><?= $elemento ?>
                    <input type="hidden" name="borrar" value="<?= $c ?>">
                    <input type="submit" name="reset" value="Borrar">
                </form>
                <?php
            }
        } else {
            $_SESSION['lista'] = [];
        }
        ?>
    </body>
</html>

Funciones Array (IV)

Obtener partes de un array y modificarlo:

array_slice()

array_splice()

Ejemplos:

 function muestraTabla($tabla) {
 echo "<pre>";
 print_r($tabla);
 echo "</pre>";
 }

 $entrada = array("rojo", "verde", "azul", "amarillo");
 array_splice($entrada, 2);
 // $entrada ahora es array("rojo", "verde")
 muestraTabla($entrada);
 $entrada = array("rojo", "verde", "azul", "amarillo");
 array_splice($entrada, 2,1);
 // $entrada ahora es array("rojo", "verde","amarillo")
 muestraTabla($entrada);
 $entrada = array("rojo", "verde", "azul", "amarillo");
 array_splice($entrada, 1, -1);
 // $entrada ahora es array("rojo", "amarillo")
 muestraTabla($entrada);

 $entrada = array("rojo", "verde", "azul", "amarillo");
 $foo=array_splice($entrada, 1, count($entrada), "naranja");
 // $entrada ahora es array("rojo", "naranja")
 //$foo es array("verde","azul","amarillo")
 muestraTabla($entrada);
 muestraTabla($foo);

 $entrada = array("rojo", "verde", "azul", "amarillo");
 array_splice($entrada, -1, 1, array("negro", "granate"));
 // $entrada ahora es array("rojo", "verde",
 // "azul", "negro", "granate")
 muestraTabla($entrada);

 $entrada = array("rojo", "verde", "azul", "amarillo");
 array_splice($entrada, 3, 0, "púrpura");
 // $entrada ahora es array("rojo", "verde",
 // "azul", "púrpura", "amarillo");
 muestraTabla($entrada);
 
 $tabla=range("a","j");
 $a=array_slice($tabla,3);
 muestraTabla($a);
 $a=array_slice($tabla,3,2);
 muestraTabla($a);
 $a=array_slice($tabla,-3);
 muestraTabla($a);
 $a=array_slice($tabla,-3,1);
 muestraTabla($a);
 $a=array_slice($tabla,-4,-2);
 muestraTabla($a);

Funciones Array (III)

Funciones para crear arrays con rangos o valores:

range()

array_fill()

array_pad()

Ejemplos:

 function muestraTabla($tabla) {
 echo "<pre>";
 print_r($tabla);
 echo "</pre>";
 }

 $a = range(1, 5);
 muestraTabla($a);
 $b = range(1, 100, 10);
 muestraTabla($b);
 $c = range('a', 'e');
 muestraTabla($c);

 $d = array_fill(2, 10, "pepe");
 muestraTabla($d);


 $input = array(12, 10, 9);

 $result = array_pad($input, 5, 0);
 // el resultado es array(12, 10, 9, 0, 0)
 muestraTabla($result);
 $result = array_pad($input, -7, 4);
 // el resultado es array(4, 4, 4, 4, 12, 10, 9)
 muestraTabla($result);

 $result = array_pad($input, 2, "noop");
 // sin relleno
 muestraTabla($result);

Ejemplos arrays

<?php

$a=[1,2,3,4];
$suma=0;
while(!empty($a)){
    $suma+=array_pop($a);
}
echo $suma;
print_r($a);
echo "<hr>";
echo contarPalabras("Hola que tal, yo estoy muy bien");
echo "<hr>";
echo palabraMasLarga("en un lugar de la mancha");
function contarPalabras($cadena){
    return count(explode(" ",$cadena));
}
function palabraMasLarga($cadena){
    $palabras= explode(" ", $cadena);
    $larga="";
    foreach($palabras as $palabra){
        if(strlen($palabra)>strlen($larga)){
            $larga=$palabra;
        }
    }
    return $larga;
}

Funciones array (II)

Pasar de cadena a array y viceversa:

explode()

implode()

str_split()

Ejemplos:

 function muestraTabla($tabla) {
 echo "<pre>";
 print_r($tabla);
 echo "</pre>";
 }

 $cadena = "hola que tal estamos";
 $tabla = explode(' ', $cadena);
 muestraTabla($tabla);
 $lista = "jamon,pollo,bistec,fuet";
 $carne = explode(",", $lista);
 muestraTabla($carne);
 $letras = str_split($lista);
 muestraTabla($letras);
 
 echo implode('-',$tabla)."<br/>";
 echo implode('***-***',$carne)."<br/>";
 echo implode('.',$letras)."<br/>";

Funciones array (I)

Número de elementos:

count()

Poner y quitar elementos:

Del final:
Quitar:
array_pop()
Poner:
array_push()

Del principio:
Quitar:
array_shift()
Poner:
array_unshift()

Ejemplos:

function muestraTabla($tabla) {
 echo "<pre>";
 print_r($tabla);
 echo "</pre>";
 }

 $tabla = array(1, 2, 3, 4, 5);
 $tabla = array("a" => 1,
 "b" => 2,
 "c" => 3,
 "d" => 4,
 "e" => 5,
 );
 muestraTabla($tabla);
 array_pop($tabla);
 muestraTabla($tabla);
 array_push($tabla, 99);
 muestraTabla($tabla);
 array_shift($tabla);
 muestraTabla($tabla);
 array_unshift($tabla, 200);
 muestraTabla($tabla);

Soluciones ejercicios

<?php

$a = [[1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]];
echo sumaDiagonal($a);

//Ejercicio 1
function sumaArray($array) {
    $suma = 0;
    foreach ($array as $fila) {
        foreach ($fila as $valor) {
            $suma += $valor;
        }
    }
    return $suma;
}

//Ejercicio 2
function sumaColumna($array, $columna) {
    $suma = 0;
    for ($i = 0; $i < count($array); $i++) {
        $suma += $array[$i][$columna];
    }
    return $suma;
}

function sumaFila($array, $fila) {
    $suma = 0;
    for ($i = 0; $i < count($array[$fila]); $i++) {
        $suma += $array[$fila][$i];
    }
    return $suma;
}

function sumaDiagonal($array) {
    $suma = 0;
    for ($i = 0; $i < count($array); $i++) {
        $suma += $array[$i][$i];
    }
    return $suma;
}