Para comparar cadenas en PHP usamos la función strcmp que quiere decir algo como string compare. Esta función devuelve números, y dependiendo de ellos podemos saber si una cadena es mayor, menor o igual en PHP.
Veamos entonces esta función para saber si una cadena es igual, mayor o menor que otra. Para ello debemos saber cómo funciona el código ASCII y el alfabeto.
Esto tiene que ver con el alfabeto y con el código ASCII. Cada carácter tiene una representación entera. Por ejemplo, la letra a minúscula tiene el valor de 97. La letra b tiene el valor de 98 y así sucesivamente.
Para las mayúsculas, la letra A minúscula tiene el valor de 65, la B de 66 y así sucesivamente.
Los seres humanos también comparamos así. Decimos que la palabra “antivirus” va antes de “casa” porque la letra a está antes de la c en el alfabeto. PHP también piensa así, pero usando el código ASCII.
Como lo dije, esta función recibe dos cadenas y devuelve un entero. Veamos los casos:
Sabiendo eso, podemos saber si una cadena es mayor que otra comparando si los resultados son menores, mayores o iguales que cero.
Veamos por ejemplo lo que devuelve al comparar “antivirus” y “casa” como vimos hace un momento:
<?php
echo strcmp("antivirus", "casa");
# Imprime -1
Eso es porque la cadena 1 es menor que la cadena 2. Comparemos ahora “antivirus” con “antiviruz” sólo para demostrar que la segunda es mayor que la primera porque la z va después de la s:
<?php
echo strcmp("antivirus", "antiviruz");
#Imprime -1
Si ahora la primera cadena es mayor, devolverá algo mayor que cero. Para demostrarlo, comparemos “mascota” con “casa” como se ve en el siguiente ejemplo:
<?php
echo strcmp("mascota", "casa");
#Imprime 1
Para terminar con los ejemplos, hagamos una función que imprima si una cadena es mayor, menor o igual que otra cadena en PHP.
Queda así:
<?php
function comparar($cadena1, $cadena2)
{
$comparacion = strcmp($cadena1, $cadena2);
if ($comparacion === 0) {
echo "$cadena1 y $cadena2 son iguales";
} else {
if ($comparacion < 0) {
echo "$cadena1 es menor que $cadena2";
} else {
echo "$cadena1 es mayor que $cadena2";
}
}
}
Podemos llamarla para ver los resultados, usando este código:
<?php
comparar("aventura", "bueno");
echo "\n"; #Esto es para separar en la consola
comparar("perro", "ave");
echo "\n"; #Esto es para separar en la consola
comparar("computadora", "computadoras");
echo "\n"; #Esto es para separar en la consola
comparar("hola mundo", "hola mundo");
La salida es:
Muy simple, llama a strcmp y comprueba si el resultado es 0. Así:
<?php
$cadena1 = "hola";
$cadena2 = "hola";
if (strcmp($cadena1, $cadena2) === 0) {
echo "Son iguales";
} else {
echo "No son iguales";
}
Así de fácil es comparar cadenas. Esta función servirá más tarde para, por ejemplo, hacer una búsqueda binara en un arreglo y saber cómo partirlo.
Cabe mencionar que si queremos que ignore si son mayúsculas o minúsculas podemos usar strcasecmp.
Aquí dejo la documentación oficial de strcmp.
En este post te enseñaré a imprimir la letra ñ en una impresora térmica. Voy…
En este post te quiero compartir mi experiencia tramitando un acta de nacimiento de México…
Hoy te voy a presentar un creador de credenciales que acabo de programar y que…
Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…
En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…
En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…
Esta web usa cookies.
Ver comentarios