Funciones para convertir un array bidimensional en html

 function array_to_table($tabla) {
 $res = "<table border=1>";
 for ($i = 0; $i < count($tabla); $i++) {
 $res .= "<tr>";
 for ($j = 0; $j < count($tabla[$i]); $j++) {
 $res .= "<td>" . $tabla[$i][$j] . "</td>";
 }
 $res .= "</tr>";
 }
 $res .= "</table>";
 return $res;
 }

 function array_to_table2($tabla) {
 $res = "<table border=1>";
 foreach ($tabla as $n) {
 $res .= "<tr>";
 foreach ($n as $el) {
 $res .= "<td>" . $el . "</td>";
 }
 $res .= "</tr>";
 }
 $res .= "</table>";
 return $res;
 }

Arrays multidimensionales

En PHP los arrays multidimensionales se crean con arrays dentro de arrays:

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

 $m=array(
 array(1,2),
 array(3,4),
 
 );
 muestraTabla($m);
 
 
 for($i=0;$i<count($m);$i++){
 for ($j=0;$j<count($m[$i]);$j++){
 echo $m[$i][$j]."<br/>";
 }
 }
 foreach ($m as $n){
 foreach ($n as $el){
 echo $el."<br/>";
 }
 }

Podemos tener las dimensiones que queramos:

 $m = array(
 array(
 array(0, 1),
 array(2, 3)
 ),
 array(
 array(4, 5),
 array(6, 7)
 ),
 array(
 array(8, 9),
 array(10, 11)
 ),
 );
 muestraTabla($m);


 for ($i = 0; $i < count($m); $i++) {
 for ($j = 0; $j < count($m[$i]); $j++) {
 for ($k = 0; $k < count($m[$i][$j]); $k++) {
 echo $m[$i][$j][$k] . "<br/>";
 }
 }
 }
 foreach ($m as $n) {
 foreach ($n as $el) {
 foreach ($el as $e) {
 echo $e . "<br/>";
 }
 }
 }

Lo mismo que usamos para recorrer lo podemos usar para generar:

 for ($i = 0; $i < 10; $i++) {
 for ($j = 0; $j < 10; $j++) {
 $m[$i][$j]=$j+$i*10;
 }
 }
 muestraTabla($m);

Un array puede ser cualquier combinación de valores, asociativos, arrays dentro de arrays dentro de arrays….

 $tablaLoca = array(
 "juan",
 "pepe" => array(1, 2, 3),
 array(
 array("a","b"),
 "w"
 ),
 5,
 "ppp"=>array(
 "q"=>3,
 "w"=>array(1,2,array(7,8))
 )
 );
muestraTabla($tablaLoca);

Si quisiéramos acceder a los valores de una tabla como la anterior necesitaríamos una función recursiva:

 function valores($var){
 $res="";
 if (is_array($var)){
 foreach($var as $v){
 $res.=valores($v);
 }
 }
 else{
 $res=$var.",";
 }
 return $res;
 }
 echo valores($tablaLoca);

Ordenar por funciones propias

Con usort(), uasort() y uksort() podemos ordenar por funciones propias. Esto nos da mucha flexibilidad a la hora de ordenar. Ejemplos:

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

 function miOrden($a, $b) {
 $la = strlen($a);
 $lb = strlen($b);

 return $la < $lb ? -1 : 1;
 }

 function acentos($name1, $name2) {
 $patterns = array(
 'a' => '(á|à|â|ä|Á|À|Â|Ä)',
 'e' => '(é|è|ê|ë|É|È|Ê|Ë)',
 'i' => '(í|ì|î|ï|Í|Ì|Î|Ï)',
 'o' => '(ó|ò|ô|ö|Ó|Ò|Ô|Ö)',
 'u' => '(ú|ù|û|ü|Ú|Ù|Û|Ü)',
 'n '=>'(ñ)'
 );
 $name1 = preg_replace(array_values($patterns), array_keys($patterns), $name1);
 $name2 = preg_replace(array_values($patterns), array_keys($patterns), $name2);
 return strcasecmp($name1, $name2);
 }

 $array1 = array("no", "ño", "na", "ña","ánimo","oído","ópera","nzuelo");

 usort($array1,'miOrden');
 muestraTabla($array1);
 usort($array1,'acentos');
 muestraTabla($array1);

Ordenar arrays

Nombre de la función Ordena por Mantiene asociación con las key Orden de la clasificación Funciones relacionadas
array_multisort() valor sí si es asociativa, no si es númerica primer array u opciones de clasificación array_walk()
asort() valor menor a mayor arsort()
arsort() valor mayor a menor asort()
krsort() key mayor a menor ksort()
ksort() key menor a mayor asort()
natcasesort() valores natural, insensible a mayúsculas y minúsculas natsort()
natsort() valor natural natcasesort()
rsort() valor no mayor a menor sort()
shuffle() valor no aleatorio array_rand()
sort() valor no menor a mayor rsort()
uasort() valor definido por el usuario uksort()
uksort() key definido por el usuario uasort()
usort() valor no definido por el usuario uasort()

Ejercicio pares impares y lista

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

 $numeros = array(2, 56, 3, 765, 4, 8, 90, 99, 23);
 foreach ($numeros as $n) {
 if ($n % 2 == 0) {
 $pares[] = $n;
 } else {
 $impares[] = $n;
 }
 }
 muestraTabla($pares);
 muestraTabla($impares);
 
 function elementosLista($cadena){
 $tabla=explode("</li>",$cadena);
 array_pop($tabla);
 foreach($tabla as $c=>$v){
 $tabla[$c]=strip_tags($v);
 }
 return $tabla;
 }

 function elementosListaMejor($cadena){
 $cadena= strip_tags(str_replace("</li><li>", "~", $cadena));
 $tabla=explode("~",$cadena);
 return $tabla;
 }

 
 $cad="<ul><li>hola</li><li>que</li><li>tal</li></ul>";
 $t=elementosListaMejor($cad);
 muestraTabla($t);

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/>";
 }

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);

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:

array_pop()

array_push()

Del principio:

array_shift()

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);