Localización de valores en una matriz
La función in_array busca en la matriz (array) el valor (numérico o cadena) contenido en el parámetro valor. Si lo encuentra devuelve 1, y, si no existiera devolvería NUL.
Posicionamientos en una matriz
key(array)
Devuelve el índice del elemento de la matriz al que apunta en ese momento el puntero interno de la matriz.
¡Cuidado!
Fíjate en el ejemplo. Pese a que hemos pedido a PHP que nos muestre, mediante la instrucción echo $a[3], esa lectura no mueve el puntero interno, que sigue señalando a la primera posición (devuelve CERO).
reset(array)
Desplaza el puntero interno a la posición del primer índice del array.
end(array)
Desplaza el puntero interno a la posición del último índice del array.
pos(array)
Mantiene el puntero interno en la posición del actual.
next(array)
Avanza el puntero interno en una posición respecto a la actual.
prev(array)
Retrocede el puntero interno en una posición respecto a la actual.
<? $a=array(1,2,3,1,1,2,3,3,4,4,4,0,1); $b=array("blanco","azul","blanco","blanco","azul","Blanco","Azul"); $c=array( "a"=>"rojo", "b" =>"verde", "c" =>"rojo", "d" =>"rojo", "e" =>"verde", "f" =>"Rojo", "g" =>"Verde"); echo "<h3>Busca un valor en una matriz</h3>"; echo " Busca el valor en la matriz: <b>#",in_array(3,$a), "#</b> Si no ha puesto nada no estaba, si 1 lo encontró <BR>"; echo " Busca el valor en la matriz: <b>#",in_array(7,$a), "#</b> Si no ha puesto nada no estaba, si 1 lo encontró <BR>"; echo " Busca el valor en la matriz: <b>#",in_array("gris",$b), "#</b> Si no ha puesto nada no estaba, si 1 lo encontró <BR>"; echo " Busca el valor en la matriz: <b>#",in_array("blanco",$b), "#</b> Si no ha puesto nada no estaba, si 1 lo encontró <BR><br>"; echo "<h3>Posicionandose y determinando indices actuales</h3>"; echo "Este el valor asoaciado al indice 3 de la matriz a: ",$a[3],"<br>"; echo "El puntero interno apunta a la clave: ",key($a),"<br>"; echo "Este es el valor siguiente al anterior: ",next($a),"<br>"; echo "El puntero interno apunta a la clave: ",key($a),"<br>"; echo "Este es el primer valor de la matriz a: ",reset($a),"<br>"; echo "El puntero interno apunta a la clave: ",key($a),"<br>"; echo "Este es el ultimo valor de la matriz a: ",end($a),"<br>"; echo "El puntero interno apunta a la clave: ",key($a),"<br>"; echo "Este es el penúltimo valor de la matriz a: ",prev($a),"<br>"; echo "El puntero interno apunta a la clave: ",key($a),"<br>"; echo "Este es el mismo valor anterior: ",pos($a),"<br>"; echo "El puntero interno apunta a la clave: ",key($a),"<br>"; echo "Este el valor asoaciado al indice 4 de la matriz b: ",$b[4],"<br>"; echo "El puntero interno apunta a la clave: ",key($b),"<br>"; echo "Este es el valor siguiente al anterior: ",next($b),"<br>"; echo "El puntero interno apunta a la clave: ",key($b),"<br>"; echo "Este es el primer valor de la matriz a: ",reset($b),"<br>"; echo "El puntero interno apunta a la clave: ",key($b),"<br>"; echo "Este es el ultimo valor de la matriz a: ",end($b),"<br>"; echo "El puntero interno apunta a la clave: ",key($b),"<br>"; echo "Este es el penúltimo valor de la matriz a: ",prev($b),"<br>"; echo "El puntero interno apunta a la clave: ",key($b),"<br>"; echo "Este es el mismo valor anterior: ",pos($b),"<br>"; echo "El puntero interno apunta a la clave: ",key($b),"<br>"; ?> |
Ordenaciones de arrays
Las funciones PHP que ordenan los elementos de un array permiten dos opciones.
Con una de ellas es posible la ordenación de los elementos sin modificar los valores de los índices, mientras que la otra sí modifica los índices.
En el segundo de los casos la modificación puede afectar incluso al tipo de índices dado que los resultados de las ordenaciones –tanto si hemos partido de un array escalar como si lo hemos hecho desde uno asociativo– es siempre un array escalar.
Ordenación por valores sin mantener índices
Ordena los valores del array en sentido creciente y lo reindexa asignando índice CERO al menor de los valores.
rsort(array)
Ordena la matriz en sentido decreciente de sus valores y la reindexa asignando índice CERO al mayor de estos.
Ordenación por índices
Ordena la matriz según sus índices y en sentido creciente de estos.
krsort(array)
Ordena la matriz por índices en sentido decreciente de los mismos.
Ordenación por valores manteniendo índices
Ordena la matriz según sus valores en sentido creciente y mantiene los índices del array original.
arsort(array)
Ordena la matriz por valores en sentido decreciente y sigue manteniendo los índices originales.
Ordenación mediante función definida por usuario
uasort(array, funcion)
Ordena la matriz utilizando los criterios establecidos por la función definida por el usuario y mantiene los índices del array.
usort(array, funcion)
Ordena la matriz por valores utilizando los criterios definidos en la función de usuario y modifica los índices.
uksort(array, funcion)
Ordena la matriz por claves utilizando los criterios definidos en la función.
En el ejemplo hemos definido una función de comparación siguiendo el criterio de ser o no ser múltiplo de 2.
Trataremos las funciones en un tema aparte. La utilidad de la que hemos incluido en el ejemplo es la siguiente: Si el valor de la variable es par le asignamos un número negativo como respuesta y en caso contrario uno positivo.
De esta forma los valores del array que devuelven negativos se consideran anteriores en la ordenación a los que dan como resultado un número positivo.
Ordenaciones de arrays <? $a=array(1,2,3,1,1,2,3,3,4,4,4,0,1); $b=array("blanco","azul","blanco","blanco","azul","Blanco","Azul"); $c=array( "b" =>"verde", "c" =>"rojo", "e" =>"verde", "f" =>"Rojo", "g" =>"Verde", "a"=>"rojo", "d" =>"rojo",); sort ($a); echo "<h3>Ordenación por valores usando sort</h3>"; foreach ($a as $clave=>$valor){ echo "Clave: ",$clave," Valor: ",$valor, "<br>"; } sort ($c); echo "<h3>Ordenación por valores usando sort</h3>"; foreach ($c as $clave=>$valor){ echo "Clave: ",$clave," Valor: ",$valor, "<br>"; } rsort($a); echo "<h3>Ordenación inversa por valores usando rsort</h3>"; foreach ($a as $clave=>$valor){ echo "Clave: ",$clave," Valor: ",$valor, "<br>"; } ksort($b); echo "<h3>Ordenación por claves usando ksort</h3>"; foreach ($b as $clave=>$valor){ echo "Clave: ",$clave," Valor: ",$valor, "<br>"; } krsort($b); echo "<h3>Ordenación inversa por claves usando krsort</h3>"; foreach ($b as $clave=>$valor){ echo "Clave: ",$clave," Valor: ",$valor, "<br>"; } asort($c); echo "<h3>Ordenación por valores manteniendo indices </h3>"; foreach ($c as $clave=>$valor){ echo "Clave: ",$clave," Valor: ",$valor, "<br>"; } arsort($c); echo "<h3>Ordenación inversa por valores manteniendo indices arsort</h3>"; foreach ($c as $clave=>$valor){ echo "Clave: ",$clave," Valor: ",$valor, "<br>"; } echo "<h3>Ordenación por valores mediante función de usuario manteniendo indices</h3>"; /* esta funcion recoge el valor de la variable $a y aplicar el operador de comparación ternario de forma que si el valor de la variable es impar devuelve como valor -2 y si es par devuelve 2 el 2 y el menos 2 unicamente establecen criterios de comparacion de modo que los valores -2 serán considerados anteriores a los valores +2 */ function micomparar (&$a) { return ($a%2!=0) ? -2 : 2; } uasort ($a, micomparar); foreach ($a as $clave=>$valor){ echo "Clave: ",$clave," Valor: ",$valor, "<br>"; } echo "<h3>Ordenación por clave mediante función de usuario </h3>"; uksort ($a, micomparar); foreach ($a as $clave=>$valor){ echo "Clave: ",$clave," Valor: ",$valor, "<br>"; } echo "<h3>Ordenación por valores mediante función de usuario </h3>"; usort ($a, micomparar); foreach ($a as $clave=>$valor){ echo "Clave: ",$clave," Valor: ",$valor, "<br>"; } ?> |
No hay comentarios:
Publicar un comentario