Diferencia entre revisiones de «PHP básico»

De Wiki Proyectos Beta
Ir a la navegación Ir a la búsqueda
Línea 1299: Línea 1299:
   //    [10] => banana
   //    [10] => banana
   //  )
   //  )
 
  //
   //  Array
   //  Array
   //  (
   //  (

Revisión del 07:53 27 ago 2022

Sintaxis básica

Documentacion oficial de la sintaxis de PHP: ES

El script PHP se ejecuta en el servidor y el resultado HTML se envía al navegador. Normalmente puede tener etiquetas HTML y PHP, pero no se recomienda. Era una práctica que se hacia hace mucho tiempo y le dio una mala fama a PHP. La recomendación es tener SOLO código PHP. Los archivos PHP se guardan con la extensión ".php".

PHP o preprocesador de hipertexto es un lenguaje de scripting de uso general de código abierto.

Etiquetas PHP

Cuando PHP analiza un fichero, busca las etiquetas de apertura y cierre, que son <?php y ?>, y que indican a PHP dónde empezar y finalizar la interpretación del código. Este mecanismo permite embeber a PHP en todo tipo de documentos, ya que todo lo que esté fuera de las etiquetas de apertura y cierre de PHP será ignorado por el analizador.

PHP también permite la etiqueta de apertura abreviada <? (la cual está desaconsejada debido a que sólo está disponible si se habilita con la directiva short_open_tag del fichero de configuración php.ini, o si PHP se configuró con la opción --enable-short-tags).

Si un fichero contiene solamente código de PHP, es preferible omitir la etiqueta de cierre de PHP al final del mismo. Así se previene la adición de espacios en blanco o nuevas líneas accidentales después de la etiqueta de cierre, lo cual causaría efectos no deseados.

Comentarios

Documentación oficial de comentarios de PHP: ES

El estilo de comentarios en PHP es como el de C, C++ o Perl:

Una sola línea

<?php echo 'Hola Proyectos Beta' ; // Esto es un comentario de una línea 
?>

Múltiples líneas

Los comentarios de varias líneas finalizan con el primer */:

<?php
  /*
    echo 'Esto es un comentario'; /* Más comentario */
  */
?>

Variables y constantes

Variables

Documentación oficial de variables en PHP ES

Una variable es un espacio de memoria reservado para almacenar un valor, con el objeto de poder visualizarlo, modificarlo u operar con él cuando se lo necesite durante la ejecución de un programa.

Esto significa que en cualquier momento, una variable puede cambiar de valor (de ahí su nombre).

En PHP, las variables son declaradas anteponiendo el símbolo del dólar ($) al nombre de esta. Los nombres de las variables deberán comenzar por una letra o por un guion bajo (_). No podrán comenzar por un número o un carácter especial.

Ejemplos

<?php
  $nombre = "Proyectos Beta";
?>

Los nombres de variable en PHP son sensibles a mayúsculas y minúsculas, por lo que:

$nombre, no es igual que $Nombre. Ambas son consideradas variables distintas.

Todos los valores que sean cadenas de caracteres, deben especificarse entre comillas (" ").

Constantes

Documentación oficial de constantes en PHP: ES

Existen casos en los que necesitamos almacenar un valor en concreto, pero sabemos que ese valor no se va a modificar en ningún momento de la ejecución del programa. Para ello usamos una constante.

Ejemplos

Constantes correctas

<?php
     // Nombres de constantes correctas.
     define ("PI", "3,14159265358979323846");
     define("FOO", "something");
     define("FOO2", "something else");
     define("FOO_BAR", "something more");
     echo (PI);
     echo (FOO);
     echo (FOO2);
     echo (FOO_BAR);
?>

Constantes incorrectas

<?php
     // Nombres de constantes incorrectas.
     define("2FOO", "something");
?>

Tipo de datos

Documentación oficial de tipo de datos PHP: ES

Documentación oficial de tipo de datos PHP: EN

Cuatro tipos escalares:

  • boolean
  • integer
  • float (número de punto flotante, también conocido como double)
  • string (cadenas de caracteres)

Cuatro tipos compuestos:

  • array
  • object
  • callable
  • iterable

Dos tipos especiales:

  • resource
  • NULL

Tipo escalares

Booleanos

El tipo de dato boolean contiene un valor lógico que solo admite true o false (verdadero o falso).

En PHP existe una función que comprueba si una variable es de tipo boolean.

La funcion se llama is_bool y devuelve si la variable es un booleano o no.

Documentación oficial: ES

Ejemplos

Ejemplo 1
$flag = true;
Ejemplo 2
$flag = true;

if(is_bool($flag)){
  echo "Es boolean.";
}else{
  echo "No es boolean.";
}

Números enteros (integers)

El tipo de dato integer (entero) contiene valores de números enteros (1, 2, 3, 4, 5, 6, 7, 8, 9...).

En PHP existe una función que comprueba si una variable es de tipo integer.

La funcion se llama is_int y devuelve si la variable es un integer o no. Existen otras funciones llamadas is_integer y is_long, pero son el alias de is_int().

Documentación oficial: ES

Ejemplos

Ejemplo 1
$numero_entero = 6;
Ejemplo 2
$numero_entero = 6;

if(is_int($numero_entero)){
  echo "Es integer.";
}else{
  echo "No es integer.";
}
Ejemplo 3
if(is_integer($numero_entero)){
  echo "Es integer.";
}else{
  echo "No es integer.";
}
Ejemplo 4
if(is_long($numero_entero)){
  echo "Es integer.";
}else{
  echo "No es integer.";
}

Números de punto flotante (double)

El tipo de dato double (reales) contiene valores de números en coma flotante (con decimales) (1,45 3,89875 8,7724 3,14 etc).

En PHP existe una función que comprueba si una variable es de tipo float.

La funcion se llama is_float y devuelve si la variable es un float o no. Existe otra función llamada is_double, pero es el alias de is_float().

Documentación oficial: ES

Ejemplos

Ejemplo 1
$precio = 3.99;
$monto = 12.0;
Ejemplo 2
$precio = 3.99;

if(is_float($precio )){
  echo "Es float.";
}else{
  echo "No es float.";
}
Ejemplo 3
if(is_double($precio)){
  echo "Es float.";
}else{
  echo "No es float.";
}

Cadenas de caracteres (strings)

El tipo de datos string contiene cadenas de caracteres.

Ejemplo

$nombre = "Proyectos Beta";

Funciones de PHP

Funciones de strings en PHP: ES

is_string

En PHP existe una función que comprueba si una variable es de tipo string.

La funcion se llama is_string y devuelve si la variable es un string o no.

Documentación oficial: ES

Ejemplo
$nombre = "Proyectos Beta";

if(is_string($nombre )){
  echo "Es string.";
}else{
  echo "No es string.";
}
explode

Devuelve un array de string, siendo cada uno un substring del parámetro string formado por la división realizada por los delimitadores indicados en el parámetro string separator.

Documentación oficial de explode: ES

Descripción
explode(string $delimiter, string $string, int $limit = PHP_INT_MAX): array
Ejemplo
<?php
  $pizza = "porción1 porción2 porción3 porción4 porción5 porción6";
  $porciones = explode(" ", $pizza);
  
  echo $porciones[0]; // porción1
  echo $porciones[1]; // porción2
implode

Une elementos de un array en un string.

Documentación oficial de implode: ES

Descripción
implode(string $separator, array $array): string

Une los elementos de un array con el string separator.

Ejemplo
<?php 
  $array = ['lastname', 'email', 'phone'];
  $unir = implode(",", $array); // string(20) "lastname,email,phone"

  echo $unir;
md5

Calcula el 'hash' md5 de un string.

Documentación oficial de md5: ES

Descripción
 md5(string $str, bool $raw_output = false): string

Calcula el hash MD5 de str utilizando el Algoritmo MD5 Message-Digest de RSA Data Security, Inc. y devuelve ese hash.

Ejemplo
<?php
  $comida = 'chocolate';

  if (md5($comida) === 'c378985d629e99a4e86213db0cd5e70d') {
     echo "Hash correcto!!!";
  }
print

Muestra una cadena de texto.

Documentación oficial de print: ES

Descripción
 print(string $arg): int

Print no es realmente una función (es un constructor de lenguaje) por lo tanto no es necesario usar paréntesis para indicar su lista de argumentos.

Ejemplo
<?php
  print("Hola mundo!!!<br/>");
  print "print() también funciona sin paréntesis!!!";
str_split

Convierte un string en un array.

Documentación oficial de str_split: ES

Descripción
 str_split(string $string, int $split_length = 1): array

Convierte un string en un array.

Ejemplo
<?php
  $cadena = "Hola mundo";

  $array1 = str_split($cadena);
  $array2 = str_split($cadena, 3);

  print_r($array1);
  print_r($array2);
stripslashes

Quita las barras de un string con comillas escapadas.

Documentación oficial de stripslashes: ES

Descripción
 stripslashes(string $str): string

Quita las barras de un string con comillas escapadas.

Ejemplo
<?php
  $cadena = "Tu nombre es O\'reilly?";

  // Salida: Tu nombre es O'reilly?
  echo stripslashes($cadena);
strlen

Obtiene la longitud de un string.

Documentación oficial de strlen: ES

Descripción
 strlen(string $string): int

Devuelve la longitud del string dado.

Ejemplo
<?php 
  $cadena1 = 'abcdef';
  echo "La longitud de la cadena1 es: " . strlen($cadena1); // La longitud de la cadena1 es: 6
  echo "<br/>";
  $cadena2 = ' ab cd ';
  echo "La longitud de la cadena2 es: " . strlen($cadena2); // La longitud de la cadena2 es: 7
strpos

Encuentra la posición de la primera ocurrencia de un substring en un string.

Documentación oficial de strpos: ES

Descripción
 strpos(string $haystack, mixed $needle, int $offset = 0): mixed

Encuentra la posición numérica de la primera ocurrencia del needle en el string haystack.

Ejemplo
<?php
  $mystring = 'abc';
  $findme   = 'b';
  $posicion = strpos($mystring, $findme);

  echo "La posición es: " . $posicion;
strtolower

Convierte un string a minúsculas.

Documentación oficial de strtolower: ES

Descripción
 strtolower(string $string): string

Devuelve un string con todos los caracteres alfabéticos convertidos a minúsculas.

Ejemplo
<?php
  $cadena = "El campo es verde, per hace MUCHo Calor.";
  $cadena = strtolower($cadena );
  
  echo $cadena ; // el campo es verde, per hace mucho calor.
strtoupper

Convierte un string a mayúsculas.

Documentación oficial de strtoupper: ES

Descripción
 strtoupper(string $string): string

Devuelve el string con todos los caracteres alfabéticos convertidos a mayúsculas.

Ejemplo
<?php
  $cadena = "El campo es verde, per hace MUCHo Calor.";
  $cadena = strtoupper($cadena );
  
  echo $cadena ; // EL CAMPO ES VERDE, PER HACE MUCHO CALOR.
substr

Devuelve parte de una cadena.

Documentación oficial de substr: ES

Descripción
 substr(string $string, int $start, int $length = ?): string

Devuelve una parte del string definida por los parámetros start y length.

Ejemplo
<?php
 $cadena1 = substr("abcdef", 2);
 echo "La cadena1 es: " . $cadena1 . "<br/>";   // Devuelve "cdef"
 
 $cadena2 = substr("abcdef", -1);
 echo "La cadena2 es: " . $cadena2 . "<br/>";   // Devuelve "f"
 
 $cadena3 = substr("abcdef", -2);
 echo "La cadena3 es: " . $cadena3 . "<br/>";   // Devuelve "ef"
 
 $cadena4 = substr("abcdef", -3, 1);
 echo "La cadena4 es: " . $cadena4 . "<br/>";   // Devuelve "d"
trim

Elimina espacio en blanco (u otro tipo de caracteres) del inicio y el final de la cadena.

Documentación oficial de trim: ES

Descripción
 trim(string $str, string $character_mask = " \t\n\r\0\x0B"): string

Esta función devuelve una cadena con los espacios en blanco eliminados del inicio y final del str. sin el segundo parámetro, trim() eliminará estos caracteres:

  • " " (ASCII 32 (0x20)), espacio simple.
  • "\t" (ASCII 9 (0x09)), tabulación.
  • "\n" (ASCII 10 (0x0A)), salto de línea.
  • "\r" (ASCII 13 (0x0D)), retorno de carro.
  • "\0" (ASCII 0 (0x00)), el byte NUL.
  • "\x0B" (ASCII 11 (0x0B)), tabulación vertical.
Ejemplo
<?php
  $text   = "\t\tThese are a few words :) ...  ";
  $binary = "\x09Example string\x0A";
  $hello  = "Hello World";
  var_dump($text, $binary, $hello);
  
  print "\n";
  
  $trimmed = trim($text);
  var_dump($trimmed);
  
  $trimmed = trim($text, " \t.");
  var_dump($trimmed);
  
  $trimmed = trim($hello, "Hdle"); 
  var_dump($trimmed);
  
  $trimmed = trim($hello, 'HdWr'); 
  var_dump($trimmed);
  
  // Elimina los caracteres de control ASCII al inicio y final de $binary
  // (from 0 to 31 inclusive)
  $clean = trim($binary, "\x00..\x1F");
  var_dump($clean);
ucfirst

Convierte el primer caracter de una cadena a mayúsculas.

Documentación oficial de ucfirst: ES

Descripción
 ucfirst(string $str): string

Devuelve una cadena con el primer caracter str en máyusculas, si el caracter es alfabético.

Ejemplo
<?php
  $cadena1 = 'hola mundo!!!';
  $cadena1 = ucfirst($cadena1);        		
  echo "La cadena1 es: " . $cadena1 . "<br/>";  // Hola mundo!!!
  
  $cadena2 = 'HOLA MUNDO!!!!';
  $cadena2 = ucfirst($cadena2);        		
  echo "La cadena2 es: " . $cadena2. "<br/>";  // HOLA MUNDO!!!!
  
  $cadena3 = ucfirst(strtolower($cadena2)); 	
  echo "La cadena3 es: " . $cadena3. "<br/>";  // Hola mundo!!!!
ucwords

Convierte a mayúsculas el primer caracter de cada palabra de una cadena.

Documentación oficial de ucwords: ES

Descripción
 ucwords(string $str, string $delimiters = " \t\r\n\f\v" ): string

Devuelve una cadena con la primera letra de cada palabra de str convertida a mayúsculas, si el caracter es alfanumérico.

Ejemplo
<?php
  $cadena1 = 'hola mundo!!!';
  $cadena1 = ucwords($cadena1);        		
  echo "La cadena1 es: " . $cadena1 . "<br/>";  // Hola Mundo!!!
  
  $cadena2 = 'HOLA MUNDO!!!!';
  $cadena2 = ucwords($cadena2);        		
  echo "La cadena2 es: " . $cadena2. "<br/>";  // HOLA MUNDO!!!!
  
  $cadena3 = ucwords(strtolower($cadena2)); 	
  echo "La cadena3 es: " . $cadena3. "<br/>";  // Hola Mundo!!!!

Tipo compuestos

arrays (matriz)

Tipo de dato array que contiene conjunto de valores.

Los arrays o matrices en PHP pueden almacenar varios valores en una variable, como un mapa ordenado. Un mapa es un tipo de datos que asocia valores con claves. Este tipo se optimiza para varios usos diferentes.

Se puede emplear como:

  • Un array
  • Una lista (vector)
  • Una tabla asociativa (tabla hash - una implementación de un mapa)
  • Un diccionario
  • Una colección
  • Una pila
  • Una cola

Ya que los valores de un array pueden ser otros arrays, también son posibles árboles y arrays multidimensionales.

Un array es una matriz/vector/arreglo que almacena valores de 3 maneras posibles dependiendo de su tipo. Los 3 diferentes tipos son:

  • Array numérico indexado.
  • Array asociativo.
  • Array multidimendional (Matrices).

Documentación oficial de arrays en PHP: ES

Ejemplos

Ejemplo 1

Array con índice numérico o array indexados sin clave.

<?php
  $autos = array("Audi", "BMW", "Hundai", "Mercedes", "Ford", "Kia");
  
  var_dump($autos);
Ejemplo 2

Un array asociativo, cuyos valores se asignan mediante claves.

<?php
  $array = array(
     "foo" => "bar",
     "bar" => "foo",
  );

  // A partir de PHP 5.4
  $array = [
     "foo" => "bar",
     "bar" => "foo",
  ];
  
  var_dump($array);
Ejemplo 3

Ejemplo con claves mixtas integer y string

<?php
  $array = array(
     "foo" => "bar",
     "bar" => "foo",
     100   => -100,
     -100  => 100,
  );
   
  var_dump($array);
Ejemplo 4

Con claves no en todos los elementos.

<?php
  $array = array(
        "a",
        "b",
     6 => "c",
        "d",
  );

  var_dump($array);
Ejemplo 5

Array bidimensional (multidimensional, se puede resumir como un array de arrays.

<?php
  $equipo_futbol = array(
    array("Rooney","Chicharito","Gigs"),
	 array("Suarez"),
	 array("Torres","Terry","Etoo")
  );

  foreach($equipo_futbol as $equipo){
    echo "En este equipo juegan: ";
	 
    foreach($equipo as $jugador){
		echo $jugador ." ";
	 }
	 
    echo "<br/>";
  }
Ejemplo 6

Array tridimensional (multidimensional, en este caso con tres dimensiones.

<?php
  $datos =
    array(
      array(
        array(0, 0, 0),
        array(0, 0, 1),
        array(0, 0, 2) 
      ),
      array(
        array(0, 1, 0),
        array(0, 1, 1),
        array(0, 1, 2) 
      ),
      array(
        array(0, 2, 0),
        array(0, 2, 1),
        array(0, 2, 2) 
      )
    );
  
  foreach($datos as $datos2){
	 foreach($datos2 as $datos3){
		foreach($datos3 as $dato){
			echo "$dato ";
	    }
		
       echo "<br/>";
	 }
	
    echo "<br/>";
  }

Funciones

Documentación oficial de las funciones de los arrays: EN

Documentación oficial de las funciones de los arrays: ES

is_array

En PHP existe una función que comprueba si una variable es de tipo array.

La función se llama is_array y devuelve si la variable es un array o no.

Documentación oficial: ES

Ejemplo
$autos = array("Audi", "BMW", "Hundai", "Mercedes", "Ford", "Kia");

if(is_array($autos)){
  echo "Es array.";
}else{
  echo "No es array.";
}
Ordenar

Documentacion de ordenamientos de arrays: ES

Ordenar - sort

Ordena un array de forma ascendente.

Documentación oficial de sort: ES

Descripción
 sort(array &$array, int $sort_flags = SORT_REGULAR): bool

Esta función ordena un array. Los elementos estarán ordenados de menor a mayor cuando la función haya terminado.

Parámetros
  • array: el array de entrada.
  • sort_flags: el segundo parámetro opcional sort_flags puede ser usado para modificar el modo de ordenación usando estos valores:

Tipos de ordenación:

  • SORT_REGULAR: compara elementos normalmente (no cambia los tipos).
  • SORT_NUMERIC: compara elementos de forma numérica.
  • SORT_STRING: compara elementos como cadenas.
  • SORT_LOCALE_STRING: compara elementos como cadenas, basándose en la configuración regional en uso. Utiliza la configuración regional, la cual puede cambiarse usando setlocale().
  • SORT_NATURAL: compara elementos como cadenas usando el "orden natural" de la misma forma que natsort().
  • SORT_FLAG_CASE: se puede combinar (OR a nivel de bits) con SORT_STRING o SORT_NATURAL para ordenar cadenas de forma insensible a mayúsculas/minúsculas.
Ejemplo
<?php
  $frutas = array("limón", "naranja", "banana", "albaricoque");
  sort($frutas);
  
  foreach ($frutas as $clave => $valor) {
     echo "frutas[" . $clave . "] = " . $valor . "\n";
  }
Ordenar - rsort

Ordena un array en orden inverso.

Documentación oficial de rsort: ES

Descripción
rsort(array &$array, int $sort_flags = SORT_REGULAR): bool

Esta función ordena un array en orden inverso (mayor a menor).

Parámetros
  • array: el array de entrada.
  • sort_flags: el segundo parámetro opcional sort_flags puede ser usado para modificar el modo de ordenación usando estos valores:

Tipos de ordenación:

  • SORT_REGULAR: compara elementos normalmente (no cambia los tipos).
  • SORT_NUMERIC: compara elementos de forma numérica.
  • SORT_STRING: compara elementos como cadenas.
  • SORT_LOCALE_STRING: compara elementos como cadenas, basándose en la configuración regional en uso. Utiliza la configuración regional, la cual puede cambiarse usando setlocale().
  • SORT_NATURAL: compara elementos como cadenas usando el "orden natural" de la misma forma que natsort().
  • SORT_FLAG_CASE: se puede combinar (OR a nivel de bits) con SORT_STRING o SORT_NATURAL para ordenar cadenas de forma insensible a mayúsculas/minúsculas.
Ejemplo
<?php
  $fruits = array("limón", "naranja", "plátano", "manzana");
  rsort($fruits);
  
  foreach ($fruits as $key => $val) {
    echo "$key = $val\n";
  }
Ordenar - asort

Ordena un array asociativo y mantiene la asociación de índices.

Documentación oficial de asort: ES

Descripción
asort(array &$array, int $sort_flags = SORT_REGULAR): bool

Esta función ordena un array manteniendo la correlación de los índices del array con los elementos con los que están asociados. Esta función se utiliza principalmente para ordenar arrays asociativos en los que el orden es importante.

Observación

Si dos miembros se comparan como iguales, su orden relativo en el array ordenado será indefinido.

Parámetros
  • array: el array de entrada.
  • sort_flags: el segundo parámetro opcional sort_flags puede ser usado para modificar el modo de ordenación usando estos valores:

Tipos de ordenación:

  • SORT_REGULAR: compara elementos normalmente (no cambia los tipos).
  • SORT_NUMERIC: compara elementos de forma numérica.
  • SORT_STRING: compara elementos como cadenas.
  • SORT_LOCALE_STRING: compara elementos como cadenas, basándose en la configuración regional en uso. Utiliza la configuración regional, la cual puede cambiarse usando setlocale().
  • SORT_NATURAL: compara elementos como cadenas usando el "orden natural" de la misma forma que natsort().
  • SORT_FLAG_CASE: se puede combinar (OR a nivel de bits) con SORT_STRING o SORT_NATURAL para ordenar cadenas de forma insensible a mayúsculas/minúsculas.
Ejemplo
<?php
  $fruits = array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple");
  
  asort($fruits);
  
  foreach ($fruits as $key => $val) {
     echo "$key = $val\n";
  }
Ordenar - arsort

Ordena un array asociativo en orden inverso y mantiene la asociación de índices.

Documentación oficial de asort: ES

Descripción
arsort(array &$array, int $sort_flags = SORT_REGULAR): bool

Esta función ordena un array de manera que los índices del array mantienen su correlación con los elementos del array asociados.

Observación

Si dos miembros se comparan como iguales, su orden relativo en el array ordenado será indefinido.

Parámetros
  • array: el array de entrada.
  • sort_flags: el segundo parámetro opcional sort_flags puede ser usado para modificar el modo de ordenación usando estos valores:

Tipos de ordenación:

  • SORT_REGULAR: compara elementos normalmente (no cambia los tipos).
  • SORT_NUMERIC: compara elementos de forma numérica.
  • SORT_STRING: compara elementos como cadenas.
  • SORT_LOCALE_STRING: compara elementos como cadenas, basándose en la configuración regional en uso. Utiliza la configuración regional, la cual puede cambiarse usando setlocale().
  • SORT_NATURAL: compara elementos como cadenas usando el "orden natural" de la misma forma que natsort().
  • SORT_FLAG_CASE: se puede combinar (OR a nivel de bits) con SORT_STRING o SORT_NATURAL para ordenar cadenas de forma insensible a mayúsculas/minúsculas.
Ejemplo
<?php
  $fruits = array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple");
  arsort($fruits);
  
  foreach ($fruits as $key => $val) {
     echo "$key = $val\n";
  }
Ordenar - ksort

Ordena un array por clave.

Documentación oficial de ksort: ES

Descripción
ksort(array &$array, int $sort_flags = SORT_REGULAR): bool

Ordena un array por clave, manteniendo la correlación entre la clave y los datos. Esto es útil principalmente para arrays asociativos.

Parámetros
  • array: el array de entrada.
  • sort_flags: el segundo parámetro opcional sort_flags puede ser usado para modificar el modo de ordenación usando estos valores:

Tipos de ordenación:

  • SORT_REGULAR: compara elementos normalmente (no cambia los tipos).
  • SORT_NUMERIC: compara elementos de forma numérica.
  • SORT_STRING: compara elementos como cadenas.
  • SORT_LOCALE_STRING: compara elementos como cadenas, basándose en la configuración regional en uso. Utiliza la configuración regional, la cual puede cambiarse usando setlocale().
  • SORT_NATURAL: compara elementos como cadenas usando el "orden natural" de la misma forma que natsort().
  • SORT_FLAG_CASE: se puede combinar (OR a nivel de bits) con SORT_STRING o SORT_NATURAL para ordenar cadenas de forma insensible a mayúsculas/minúsculas.
Ejemplo
<?php
  $fruits = array("d"=>"lemon", "a"=>"orange", "b"=>"banana", "c"=>"apple");
  
  ksort($fruits);

  foreach ($fruits as $key => $val) {
     echo "$key = $val\n";
  }
Ordenar - krsort

Ordena un array por clave en orden inverso.

Documentación oficial de ksort: ES

Descripción
krsort(array &$array, int $sort_flags = SORT_REGULAR): bool

Ordena un array por clave en orden inverso, manteniendo la correlación entre la clave y los datos. Esto es útil principalmente para arrays asociativos.

Parámetros
  • array: el array de entrada.
  • sort_flags: el segundo parámetro opcional sort_flags puede ser usado para modificar el modo de ordenación usando estos valores:

Tipos de ordenación:

  • SORT_REGULAR: compara elementos normalmente (no cambia los tipos).
  • SORT_NUMERIC: compara elementos de forma numérica.
  • SORT_STRING: compara elementos como cadenas.
  • SORT_LOCALE_STRING: compara elementos como cadenas, basándose en la configuración regional en uso. Utiliza la configuración regional, la cual puede cambiarse usando setlocale().
  • SORT_NATURAL: compara elementos como cadenas usando el "orden natural" de la misma forma que natsort().
  • SORT_FLAG_CASE: se puede combinar (OR a nivel de bits) con SORT_STRING o SORT_NATURAL para ordenar cadenas de forma insensible a mayúsculas/minúsculas.
Ejemplo
<?php
  $fruits = array("d"=>"lemon", "a"=>"orange", "b"=>"banana", "c"=>"apple");
  
  krsort($fruits);
  
  foreach ($fruits as $key => $val) {
     echo "$key = $val\n";
  }
Ordenar - natsort
Comparar - array_diff

Calcula la diferencia entre arrays.

Documentación oficial de array_diff: ES

Descripción
 array_diff(array $array1, array $array2, array $... = ?): array

Compara array1 con uno o más arrays y devuelve los valores de array1 que no estén presentes en ninguno de los otros arrays.

Parámetros
  • array1: el array a comparar.
  • array2: un array con el que comparar.
  • ...: más arrays con los que comparar.
Valores devueltos

Devuelve un array que contiene todas las entradas de array1 que no están presentes en ninguna de los otros arrays.

Observación

Se observa que lo que compara son los valores.

Ejemplo 1
<?php
  $array1    = array("a" => "green", "red", "blue", "red", "violet");
  $array2    = array("b" => "green", "yellow", "red");
  $resultado = array_diff($array1, $array2);
  
  print_r($resultado);
Ejemplo 2
<?php
  $animales = array (
     "gato" => "Michi",
     "perro" => "Rambo",
     "chimpancé" => "Monito",
     "papagayo" => "Laurita",
     "Carlos",
     "oso" => "Polar"
  );
  $animales2 = array (
     "perro" => "Rambo",
     "gato" => "Michi",
     "conejo" => "blanquito",
     "Monito"
 );
 $diferencia = array_diff($animales, $animales2);
 
 var_dump($diferencia);
Comparar - array_diff_assoc

Calcula la diferencia entre arrays con un chequeo adicional de índices.

Documentación oficial de array_diff_assoc: ES

Descripción
 array_diff_assoc(array $array1, array $array2, array $... = ?): array

Compara array1 con array2 y devuelve la diferencia, pero esta vez comparando values y keys. Se aceptan también más arrays.

Parámetros
  • array1: el array a comparar.
  • array2: un array con el que comparar.
  • ...: más arrays con los que comparar.
Valores devueltos

Devuelve un array que contiene todos los valores de array1 que no están presentes en ninguno de los otros arrays.

Observación

Se observa que lo que compara son los valores.

Ejemplo 1

El par "a" => "green" está presente en ambos arrays y, por lo tanto, no está en la salida de la función. Al contrario, el par 0 => "red" está en la salida ya que en el segundo argumento "red" tiene una clave que es 1.

<?php
  $array1    = array("a" => "green", "b" => "brown", "c" => "blue", "red");
  $array2    = array("a" => "green", "yellow", "red");
  $resultado = array_diff_assoc($array1, $array2);
  
  print_r($resultado);
Ejemplo 2
<?php
  $animales = array (
     "gato" => "Michi",
     "perro" => "Rambo",
     "chimpancé" => "Monito",
     "papagayo" => "Laurita",
     "Carlos",
     "oso" => "Polar"
  );
  $animales2 = array (
     "perro" => "Rambo",
     "gato" => "Michi",
     "conejo" => "blanquito",
     "Monito",
     "Carlos",
 );
 $diferencia = array_diff_assoc($animales, $animales2);
 
 var_dump($diferencia);
 // Salida.
 // array(4) {
 //   ["chimpancé"] => string(6) "Monito"
 //   ["papagayo"]  => string(7) "Laurita"
 //   [0]           => string(6) "Carlos"
 //   ["oso"]       => string(5) "Polar"
 // }
Unir - array_merge

Combina dos o más arrays.

Documentación oficial de array_merge: ES

Descripción
 array_merge(array $array1, array $... = ?): array

Combina los elementos de uno o más arrays juntándolos de modo que los valores de uno se anexan al final del anterior. Retorna el array resultante.

Parámetros
  • array1: array inicial a combinar.
  • ...: lista variable de arrays para combinar.
Valores devueltos

Retorna el array resultante.

Observaciones
  • Si los arrays de entrada tienen las mismas claves de tipo string, el último valor para esa clave sobrescribirá al anterior. Sin embargo, los arrays que contengan claves numéricas, el último valor no sobrescribirá el valor original, sino que será añadido al final.
  • Los valores del array de entrada con claves numéricas serán renumeradas con claves incrementales en el array resultante, comenzando desde cero.
Ejemplo 1
<?php
  $array1 = array("color" => "red", 2, 4);
  $array2 = array("a", "b", "color" => "green", "shape" => "trapezoid", 4);
  $resultado = array_merge($array1, $array2);
  
  print_r($resultado);
  // Salida.
  // Array
  // (
  //   [color] => green
  //   [0] => 2
  //   [1] => 4
  //   [2] => a
  //   [3] => b
  //   [shape] => trapezoid
  //   [4] => 4
  // )
Ejemplo 2
<?php
  $array1    = array();
  $array2    = array(1 => "data");
  $resultado = array_merge($array1, $array2);
  
  print_r($resultado);
 // Salida.
 // Array
 // (
 //    [0] => data
 // )
Unir - array_merge_recursive

Une dos o más arrays recursivamente.

Documentación oficial de array_merge_recursive: ES

Descripción
 array_merge_recursive(array $array1, array $... = ?): array

array_merge_recursive() une los elementos de uno o más arrays de modo tal que los valores de uno sean añadidos al final del anterior. Devuelve el array resultante.

Parámetros
  • array1: array inicial a combinar.
  • ...: Lista variable de arrays a unir recursivamente.
Valores devueltos

Un array de valores resultante de la unión de los argumentos.

Observaciones
  • Si los arrays de entrada tienen las mismas claves de tipo string, los valores de estas claves son unidas en un array, y esto se realiza recursivamente, de modo que si uno de los valores es un array mismo, la función unirá también ésta con la correspondiente entrada de otro array.
  • Si los arrays tienen la misma clave numérica, el valor posterior no sobrescribirá el valor original, sino que será añadido al final.
Ejemplo
<?php
  $m1 = array("color" => array("favorito" => "rojo"), 5);
  $m2 = array(10, "color" => array("favorito" => "verde", "azul"));
  $resultado = array_merge_recursive($m1, $m2);
  
  print_r($resultado);
  // Salida.
  // Array
  // (
  //   [color] => Array
  //      (
  //         [favorito] => Array
  //             (
  //                 [0] => rojo
  //                 [1] => verde
  //             )
  //
  //         [0] => azul
  //      )
  //
  //   [0] => 5
  //   [1] => 10
  // )
Unir - array_combine

Crea un nuevo array, usando una matriz para las claves y otra para sus valores.

Documentación oficial de array_combine: ES

Descripción
 array_combine(array $keys, array $values): array

Crea un array usando los valores del array keys como las keys y los valores del array values como los valores correspondientes.

Parámetros
  • keys: array de las keys a usar. Cualquier valor inválido para la key será convertido a string.
  • values: array de valores a usar.
Valores devueltos

Retorna el array combinado, false si el número de elementos de cada array no es igual.

Observaciones
  • Arroja un E_WARNING si el número de elementos en keys y values no coincide.
Ejemplo
<?php
  $a = array('green', 'red', 'yellow');
  $b = array('avocado', 'apple', 'banana');
  $c = array_combine($a, $b);
  
  print_r($c);
  // Salida.
  //   Array
  // (
  //   [green]  => avocado
  //   [red]    => apple
  //   [yellow] => banana
  // )
Rellenar - array_fill

Llena un array con valores.

Documentación oficial de array_fill: ES

Descripción
 array_fill(int $start_index, int $num, mixed $value): array

Llena un array con num entradas del valor del parámetro value, las keys inician en el parámetro start_index.

Parámetros
  • start_index: el primer índice del array retornado. Si start_index es negativo, el primer índice del array retornado será start_index y los siguientes indices comenzarán desde cero.
  • num: número de elementos a insertar. Debe ser mayor o igual que cero.
  • value: valor a usar para el llenado.
Valores devueltos

Retorna el array llenado.

Observaciones
  • Arroja un E_WARNING si num es menor que cero.
Ejemplo
<?php
  $a = array_fill(5, 6, 'banana');
  $b = array_fill(-2, 4, 'pear');
  
  print_r($a);
  print_r($b);
  // Salida.
  //  Array
  //  (
  //     [5]  => banana
  //     [6]  => banana
  //     [7]  => banana
  //     [8]  => banana
  //     [9]  => banana
  //     [10] => banana
  //  )
  //
  //  Array
  //  (
  //     [-2] => pear
  //     [0] => pear
  //     [1] => pear
  //     [2] => pear
  //  )
Rellenar - range

Crear un array que contiene un rango de elementos.

Documentación oficial de range: ES

Descripción
 range(mixed $start, mixed $end, number $step = 1): array

Crea un array que contiene un rango de elementos.

Parámetros
  • start: primer valor de la secuencia.
  • end: la secuencia finaliza al alcanzar el valor end.
  • step: si se proporciona un valor a step, este será usado como el incremento entre los elementos de la secuencia. step debería darse como número positivo. Si no se especifica, el valor predeterminado de step será 1.
Valores devueltos

Devuelve un array de elementos desde start a end, inclusive.

Ejemplo 1
 <?php
   // array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
   foreach (range(0, 12) as $número) {
     echo $número;
   }
Ejemplo 2
<?php
  // El parámetro step
  // array(0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100)
  foreach (range(0, 100, 10) as $número) {
     echo $número;
  }
Ejemplo 3
 <?php
   // Empleo de las secuencias de caracteres
   // array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i');
   foreach (range('a', 'i') as $letra) {
     echo $letra;
   }
Ejemplo 4
 <?php
   // array('c', 'b', 'a');
   foreach (range('c', 'a') as $letra) {
     echo $letra;
   }
Para modificar arrays
array_push
unset
Extras
count
array_map
shuffle
array_merge

object

Un objeto es una estructura de datos que contiene propiedades (lo que normalmente se considera datos) y métodos (funciones que nos permite manipular las propiedades del objeto).

En PHP existe una función que comprueba si una variable es de tipo object.

La función se llama is_object y devuelve si la variable es un object o no.

Documentación oficial: ES

Ejemplos

Ejemplo 1
<?php
 class Car {
   function get_color() {
      echo "El color car es blanco";
   }
 }
 
 // Inicializar un objeto.
 $auto = new Car();
 
 echo $auto->get_color();
Ejemplo 2
<?php
 class Car {
   function get_color() {
      echo "El color car es blanco";
   }
 }
 
 // Inicializar un objeto.
 $auto = new Car();
 
 if(is_object($auto)){
   echo "Es un object.";
 }else{
   echo "No es un object.";
 }

callable

Los tipos callable son cualquier cosa que se puede llamar como una devolución de llamada. Las cosas que pueden denominarse "devolución de llamada" son las siguientes:

  • Funciones anonimas.
  • Funciones estándar de PHP (no construcciones de lenguaje).
  • Clases estáticas.
  • Clases no estáticas (usando una sintaxis alternativa).
  • Objetos específicos / Métodos de clase.
  • Los objetos mismos, siempre que el objeto se encuentre en la clave 0 de una matriz.

iterable

Tipo especiales

Resource

Un recurso es un tipo especial de variable que hace referencia a un recurso externo, como un archivo, socket, flujo, documento o conexión.

Ejemplos

Ejemplo 1

La función mysqli_connect() abre una nueva conexión al servidor de MySQL.

<?php
  $conn = mysqli_connect("127.0.0.1", "root", "", "test");
  var_dump($conn);
Observación

La variable $conn se puede reasignar posteriormente con otro recurso o con el valor NULL.

Ejemplo 2
Ejemplo en Microsoft Windows
<?php
  $file = fopen('C:\Windows\System32\drivers\etc\hosts', 'r');

  echo gettype($file);
  # Out: resource

  echo "<br/>";

  echo $file;
  # Out: Resource id #3
Ejemplo en GNU/Linux
<?php
  $file = fopen('/etc/passwd', 'r');

  echo gettype($file);
  # Out: resource

  echo "<br/>";

  echo $file;
  # Out: Resource id #3

Sub tipos de recursos

Hay diferentes (sub) tipos de recursos. Puede verificar el tipo de recurso usando get_resource_type()

Ejemplos
Ejemplo 1 en Microsoft Windows
<?php
  $file = fopen('C:\Windows\System32\drivers\etc\hosts', 'r');
  echo get_resource_type($file);
  #Out: stream
Ejemplo 2 en GNU/Linux
<?php
  $file = fopen('/etc/passwd', 'r');
  echo get_resource_type($file);
  #Out: stream
Ejemplo 3
<?php
  $sock = fsockopen('www.google.com', 80);
  echo get_resource_type($sock);
  #Out: stream
Observación
  • Puede encontrar una lista completa de los tipos de recursos incorporados EN.

NULL

Tipo de dato NULL que es un valor que indica ausencia de valor.

Una variable puede ser nula por tres razones:

  • Se le asignó un valor NULL.
  • No se le asignó aún ningún valor.
  • Se anuló con la función unset()

La asignación de NULL tiene esta sintaxis:

<?php
  $var = NULL;

Operadores

Operadores aritméticos

Suma

Suma: $a + $b

Resta

Resta: $a – $b

Multiplicación

Multiplicación: $a * $b

División

División: $a / $b

Resto de una división

Resto de una división: $a % $b

Incremento

Incremento: $a++

Decremento

Decremento: $b--

Operadores de comparación

Menor que

Menor que: $a < $b

Mayor que

Mayor que: $a > $b

Menor o igual que

Menor o igual que: $a <= $b

Mayor o igual que

Mayor o igual que: $a >= $b

Igual que

Igual que: $a == $b

Distinto que

Distinto que $a != $b

Estructuras de control

Funciones

Clases

Constantes

Es posible definir valores constantes en función de cada clase manteniéndola invariable. Las constantes se diferencian de las variables comunes en que no utilizan el símbolo $ al declararlas o emplearlas. La visibilidad predeterminada de las constantes de clase es public.

Observaciones:

  • Las constantes de clase están asignadas una vez por clase, y no por cada instancia de la clase.

Ejemplos

Definición y uso de una constante

<?php
  class MiClase
  {
     const CONSTANTE = 'valor constante';
 
     function mostrarConstante() {
         echo self::CONSTANTE . "\n";
     }
  }
 
  echo MiClase::CONSTANTE . "\n";
 
  $nombreclase = "MiClase";
  echo $nombreclase::CONSTANTE . "\n"; // A partir de PHP 5.3.0
 
  $clase = new MiClase();
  $clase->mostrarConstante();
 
  echo $clase::CONSTANTE."\n"; // A partir de PHP 5.3.0
?>

Interfaces

Las interfaces de objetos permiten crear código con el cual especificar qué métodos deben ser implementados por una clase, sin tener que definir cómo estos métodos son manipulados.

Las interfaces se definen de la misma manera que una clase, aunque reemplazando la palabra reservada class por la palabra reservada interface y sin que ninguno de sus métodos tenga su contenido definido.

Documentación oficial de interfaces: ES

Observación

  • Todos los métodos declarados en una interfaz deben ser públicos, ya que ésta es la naturaleza de una interfaz.
  • Para implementar una interfaz, se utiliza el operador implements. Todos los métodos en una interfaz deben ser implementados dentro de la clase; el no cumplir con esta regla resultará en un error fatal. Las clases pueden implementar más de una interfaz si se deseara, separándolas cada una por una coma.

Ejemplos

Ejemplo 1

Ejemplo de interfaz

<?php
 // Declarar la interfaz 'iTemplate'
 interface iTemplate {
     public function setVariable($name, $var);
     public function getHtml($template);
 }

 // Implementar la interfaz
 class Template implements iTemplate {
     private $vars = array();

     public function setVariable($name, $var){
         $this->vars[$name] = $var;
     }

     public function getHtml($template){
         foreach($this->vars as $name => $value) {
             $template = str_replace('{' . $name . '}', $value, $template);
         }

         return $template;
     }
 }

Ejemplo 2

Interfaces extensibles.

 <?php
   interface a {
     public function foo();
   }

   interface b extends a {
     public function baz(Baz $baz);
   }

   class c implements b {
     public function foo() {}

     public function baz(Baz $baz) {}
   }

Namespaces

Los namespaces o espacios de nombres permiten crear aplicaciones complejas con mayor flexibilidad evitando problemas de conflictos entre clases y mejorando la legibilidad del código. Un namespace no es más que un directorio para clases, traits, interfaces, funciones y constantes. Se crean utilizando la palabra reservada namespace al principio del archivo, antes que cualquier otro código, a excepción de la estructura de control declare.

Documentación oficial de namespaces ES

Ejemplos

Ejemplo 1

Un archivo llamado MiClase.php

<?php
   // Directorio: Proyecto/Prueba/MiClase.php
   namespace Proyecto\Prueba;

   class MiClase {
       public function __construct(){
           echo "Hola, soy MiClase.";
       }
   }

Otro archivo llamado Test.php que utiliza el namespace Proyecto\Prueba;

<?php
 include_once ('MiClase.php');
 
 use Proyecto\Prueba\MiClase as miClase;

 $miClase = new miClase();

Excepciones

Type Hint

Desde PHP 5 es posible utilizar el type hinting (determinación de tipos) que permite especificar el tipo de datos que se espera de un argumento en la declaración de una función. Cuando se llama a la función, PHP comprobará si los argumentos son del tipo especificado, y si no lo son, se emitirá un error y la ejecución se detendrá.

Los tipos soportados son:

  • Arrays
  • Clases
  • Interfaces
  • Callables
  • Bool
  • Float
  • Int
  • Iterable
  • Object
  • Self
  • String
  • Void

Ejemplos

Ejemplo 1

class ChocolateAmargo {
    public $calorias = 520;
}

class Persona {
    public $energia;
   
    public function comerChocolateAmargo (ChocolateAmargo $chocolateAmargo) {
        $this->energia += $chocolateAmargo->calorias;
    }
    
    public function mostrarEnergia(){
        return "Energía actual: " . $this->energia . "<br/>";
    }
}

$josego = new Persona;
$desayuno = new ChocolateAmargo;
$josego->comerChocolateAmargo($desayuno);
$josego->comerChocolateAmargo($desayuno);
echo $josego->mostrarEnergia(); // Devuelve: Energía actual 1040

En el ejemplo, hemos forzado a que el argumento que se pasa a la función comerChocolateAmargo() sea un objeto de la clase ChocolateAmargo. Si el $desatuyno no fuera un objeto de la clase ChocolateAmargo, no se podría emplear la función comerChocolateAmargo() y arrojaría un error.

Ejemplo 2

class Persona {
   public $energiaMedia;
   public $comidas;

   public function calcularEnergia(array $comidas){
       $numeroComidas = count($comidas);
       $energiaTotal = $numeroComidas * $this->energiaMedia;

       return $energiaTotal;
   }
}

$josego = new Persona;

// Energía media que proporciona cada comida:
$josego->energiaMedia = 480;

// Total de comidas:
$comidas = array("Desayuno", "Almuerzo", "Comida", "Cena");

// Calcular la energía:
echo $josego->calcularEnergia($comidas); // Devuelve 1920

La función calcularEnergia() exige que el argumento sea un array. Si cambiamos el argumento y ponemos un integer, nos dará un error.

Extras

  • El problema de las comillas
  • Break
  • Include y require - Qué son, diferencias y cómo usarlos
  • Extending and implementation
  • HTTP request