Mortuux

Diario de un estudiante geek. Informática, tecnología, programación, redes, sistemas operativos, bases de datos…

Archivos por Etiqueta: php

Matrices en Php (II)

Recorrido por las matrices

El método apropiado para recorrer una matriz es utilizar la sentencia foreach(), cuya sintaxis es la siguiente:
foreach(matriz as $clave => $valor) {
... ... ...
}

El parámetro matriz representa la matriz por la que realizaremos el recorrido y $clave/$valor representan respectivamente el par individual clave/valor por el que pasamos.
$matriz = array('el', 'coche', 'es', 'azul');

/* Obtener tanto la clave como el valor */
foreach($matriz as $clave => $valor) {
echo "El valor de $clave es: $valor";
}

/*Obtener solamente el valor */
foreach($matriz as $valor) {
echo "El valor es: $valor";
}

Anuncios

Matrices en Php (I)

En PHP, podemos crear una variable de matriz de varias formas. La más sencilla:
$variable[expr clave] = expr;

Expr clave es una expresión que se evalúa para una cadena o cualquier entero no negativo y expr representa la expresión cuyo valor se asociará con la clave.
$var['a'] = 1;
$var['b'] = 2;
$var['c'] = 3;
$var['d'] = 4;

Si expr clave no se especifica, PHP utilizará automáticamente el siguiente entero disponible como clave.

Cuando definamos una matriz dentro de una secuencia de comandos manualmente, utilizar esta sintaxis puede ser difícil. En estos casos es mejor utilizar la sintaxis formal para las matrices; la sentencia array(). La sintaxis general es la siguiente:
$variable = array([mixto]);

En la sintaxis anterior, mixto representa los distintos pares de claves/valores definidos en este formato:
expr clave => expr valor;
expr clave => expr valor;

Por ejemplo:
$hola = array('a' => 1, 'b' => 2, 'c' => 3);
Es lo mismo que:
$hola['a'] = 1;
$hola['b'] = 2;
$hola['c'] = 3;

Matriz que asigna claves del 1 al 12 a los meses del año:
$meses = array(1=>"Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre");

Buscar y reemplazar cadenas en php

Esta tarea normalmente se realiza a través de la función strpos(cadena_donde_se_busca,subcadena_a_buscar) que devuelve false si no encuentra nada, o devuelve la posión del primer carácter buscado dentro de la cadena.

$cadena = "Hola que tal estoy probando las cadenas"
$pos = strpos($cadena, "estoy");
if (!$pos)
echo "No se ha encontrado nada\n");
else
echo "Posición: $pos\n");

Eso devolvería el valor 13.

También se puede indicar que empiece a buscar desde la derecha, para ello existe la función strrpos(). Como ya esperabas, strpos() es sensible a las mayúscualas y minúsculas, pero curiosamente no hay otra alternativa para esta función. Pero en php existe la función strstr() que funciona de manera similar a strpos() y tiene una variante sin sensibilidad a mayúsculas denominada stristr(). La diferencia entre strstr() y strpos(), es que strstr() devuelve la parte posterior de la subcadena buscada. En el ejemplo anterior, strpos() devolvía 13, pues bien, utilizando la función strstr():

$cadena = "Hola que tal estoy probando las cadenas"
$pos = strstr($cadena, "estoy");
if (!$pos)
echo "No se ha encontrado nada\n");
else
echo "Posición: $pos\n");

Eso devolvería “estoy probando las cadenas”

Para reemplazar cadenas existen dos funcionaes. Una de ellas es substr_replace, que podrá ser utilizada siempre que conozcamos la posición y la longitud de la sub cadena a reemplazar.

$cadena = "Hola que tal estoy probando las cadenas";
$nueva = substr_replace($cadena, "estoy", 13, 5);
echo "$nueva\n";

Pero no tenemos porque conocer la longitud ni la posición, para estos casos tenemos la función str_replace(subcadena_buscada, subcadena_nueva, cadena)

$cadena = "Hola que tal estoy probando las cadenas";
$nueva = str_replace("probando", "quemando", $cadena);
echo "$nueva\n";

Comparación de cadenas en php

Comparar cadenas en php no es tan fácil como hacerlo con números. Si examinamos una cadena basándonos en su forma binaria, “Juan” y “juan” serán completamente diferentes. El valor de “Juan” en binario es: 010010100111010101100001011011100000110100001010 y para “juan” es: 011010100111010101100001011011100000110100001010.

La primera función de comparación es strcmp(). El valor devuelto por esta función depende de la relación alfabética entre las dos cadenas. Si $val1 y $val2 son idénticas, strcmp() devolverá 0. strcmp() distingue entre mayúsculas y minúsculas. Si no son igualesm el valor devuelto estará determinado por las reglas de orden alfabético. Si $val1 es alfabéticamente inferior a $val2, el resultado será negativo, en caso contrario, será positivo.
echo strcmp("Alvaro", "Benito"); // Devuelve < 0

echo strcmp("manzana", "Manzana"); // Devuelve > 0

Los números tienen un valor contexual más bajo que las letras, y las letras mayúsculas un valor contextual más bajo que las minúsculas. Si queremos comparar cadenas sin distinción entre mayúsculas y minúsculas, debemos usar la función strcasecmp();

echo strcasecmp("Juan", "juan"); // devuelve 0;

Aún no existe una solución que se acerque a la capacidad del cerebro humano, pero se han desarrollado varios algoritmos que nos proporcionan un método para medir la “similitud” entre dos cadenas. Uno de estos ejemplos es el algoritmo soundex. Soundex funciona asignando un valor a cada constante del alfabeto y calculando posteriormente el valor total de una palabra basándose en sus sílabas iniciales y componentes. En php se implanta mediante la función soundex();

echo soundex("Mortuus"); //Devuelve M632
echo soundex("Mortiis"); // Devuelve M632
echo soundex("Mortem"); // Devuelve M635

Otro algoritmo para comparar dos palabras basándonos en sus representaciones fonéticas es el metáfono. Este algoritmo funciona asignando un valor fonético a combinaciones de caracteres basándose en su uso típico en inglés. Php lo implanta a través de la función metaphone();

echo metaphone("Mortuus"); // Devuelve MRTS
echo metaphone("Mortiis"); // Devuelve MRTS
echo metaphone("Mortem"); //Devuelve MRTM