En este post voy a colocar algunos conceptos sobre PHP (bastante básicos) que he ido reuniendo. Es posible que la definición de los conceptos que ponga, no sea la más académica ni la más correcta, pero es la manera en la que yo entendí las cosas.
Es evidente que ni están todas las cosas importantes, ni se las espera. Pero creo que son algunos conceptos básicos sobre PHP y sus cosas que a más de uno pueden ayudarle a entener cierto conceptos. Intentaré acompañar con ejemplos cada uno de los conceptos, siempre que los tenga a mano …
Conceptos sobre PHP
- while (condición){código} – do{código} while(condición): Son bucles. While se ejecuta mientras se siga produciendo la condición que se encerrará entre los paréntesis que acompañan a While. De produdirse se ejecutará el código que va dentro de las llaves que van a continuación de la condición. Puede ser que si nunca se produce la condición de los paréntesis, nunca se ejecute el código que encierran las llaves. Para evitar esto se usa do While. En este caso se ejecuta una vez como mínimo el código que encierran las llaves, y se seguirá ejecutando mientras se siga cumpliendo la condición que acompaña a while entre paréntesis al final del bucle.
- if (condición){código}else{código}: Se trata de un condicional. En caso de producirse la condición, se ejecuta el primer código que encuentra entre las llaves. En caso de no producirse se ejecuta el código que va después del else. Estos condicionales se pueden anidar tantas veces como se quiera. En lugar de else, también se puede utilizar elseif para dar más de una posibilidad.
En PHP existe una especie de if comprimido. Sintáxis; Condición?Valor_verdadero:Valor_falso;. La condición es una función que devuelve verdadero o falso. Valores verdadero o falsos no pueden ser sentencias, solo funciones o expresiones. - for(indice;indice<>==tamaño_máximo;incremento_del_indice){código}: El bucle se ejecuta mientras el tiempo de ejecución no lo finalice. El tiempo de ejecución consiste en un índice que se va incrementando hasta que se cumpla el orden de finalización con respecto al tamaño máximo del bucle.
- $$Variable: Se trata de una variable dentro de una variable. Transforma el valor de la primera variable, en una segunda variable dentro de la primera variable. En principio solo puede tener un nivel, vamos que solo puede haber una variable dentro de otra variable.
- $variable: Las variables son son espacios en los que guardar datos. Estas variables pueden ser estáticas, globales o locales.– Variables locales: solo le afectan las operaciones dentro de la función. Siempre que se pase por valor (otra cosa es que se pase por referencia). Si no se indica nada la variable es local.
– Variables globales: Las modificaciones de las variables globales afectan al valor de la variable al salir de la función. Las variables globales se definen con la palabra global al principio. Solo se define como global dentro de una función. En caso de estar fuera de una función no es necesario que se ponga global. Las funciones globales afectan a todo el código de esa página.
– Variables estáticas: la variable con static al comienzo de la definición. Recuerda el valor que tiene después de terminar la función donde se trabaja con ella. Las variables estáticas están siempre dentro de la función, para que recuerde siempre el estado con el que quedó la última vez que se ejecutó dicha función.
- echo – print: Echo imprime por pantalla. Admite sintáxis de punto, para realizar concatenaciones. Print hace lo mismo que echo, también imprime por pantalla, pero no admite sintáxis de punto. La diferencia entre ambos es que echo puede imprimir más de un argumento al mismo tiempo, mientras que print no.
- $: Se usa para declarar las variables. Las variables pueden comenzar por una letra o por guión bajo. No aceptan espacios en blanco o caracteres especiales en su nombre.
- void nombre_función(par1,par2): Las funciones con void son funciones que no devuelven nada.
- gettype($variable): Función que devuelve el tipo de dato de la variable que encierra entre los paréntesis, string, boolean, unknow, integer, float, class, array.
- settype($variable, tipo): Función que establece un tipo a la variable que se le indica.
- isset($variable): Función que comprueba si una variable ha sido definida. No es necesario definir la variable para hacer la comprobación. Se pueden pasar más de una variable. La evaluación se hace de izquierda a derecha y se detiene cuando encuentre una variable sin definir. Devuelve true o false. No puede ser NULL. En caso de que la variable que recoge POST esté vacía, isset lo deja pasar por que la variable está establecida. Por este motivo isset no se debe utilizar para evaluar si los campos que se envían por un formulario.
- empty($variable): Función que comprueba si una variable está vacía. No da error si la variable no existe. si la variable contiene 0 no se considerará vacía, lo interpretaría como un entero. Esta si sería la función correcta para evaluar si las variables que recoge POST en un formulario vienen vacías o no.
- unset($variable): Elimina la variable. Deja de ser utilizable y se vacía.
- var_dump($variable): Muestra que tipo de dato es el que aloja la variable. Al mismo tiempo muestra el valor de la variale.
- inval, doubleval, strval: Son funciones que convierten el valor de una variable en unos u otros tipos de datos.
- define(): Con define se definen constantes (su valor será siempre el mismo). Se les asigna un nombre y un valor. Con defined(«nombre_constante») se está preguntando si la constante está definida o no, esto nos devuelve true o false. Es consejable definir las constantes al principio del programa.
- .: El punto es el operador de concatenación. Concatena strings. Los espacios hay que indicarlos.
- PHP_VERSION: Muestra la versión de php que está usando el usuario. Es una variable de entorno que sacamos del fichero de configuración php.ini.
- PHP_OS: Indica sobre que sistema operativo se está trabajando. Es una variable de entorno que sacamos del fichero de configuración php.ini.
- += : Es otra manera de sumar un valor a una variable $a=$a+$b es lo mismo que $a+=$b. Suma el valor de la derecha del igual al valor que ya tiene la variable de la izquierda del signo más.
- $a++ o ++$a: El preincremento aumenta el valor de la variable antes de imprimirlo. El postincremento aumenta el valor de la variable después de imprimir en pantalla el valor de dicha variable. Esto mismo se puede hacer predecrementando o postdecrementando (
$a– o –$a), que es lo mismo pero restando. - =, ==, ===: El = asigna un valor; $a=1; … El == compara el contenido. Su negación es !=; $i==10; … El === compara los tipos de datos y contenidos. Su negación es !==; $a === «contenido string»;
- `comillas invertidas`: Entre ellas se pueden meter operadores de ejecución del sistema. `TIME` obtiene la hora del sistema, el operador TIME sirve para ver la hora y cambilar la hora del sistema. Con echo `DATE`; se muestra la fecha del sistema.
- @: Se usar para la omisión de errores que permite que se siga ejecutando el programa. En la división entre 0 da un error. Se puede configurar su uso en el archivo php.ini que tiene que ver con el seguimiento de errores «track_errors=on». Si no queremos utilizar @ habría que cambiar el track_errors en OFF.
- $php_errormsg: Es una variable que muestra el contenido de un posible error típico. Los errores se van guardando en un archivo de LOG.
- API: Siglas de «Application Program Interface».
- Transacción: Es un conjunto de operaciones que o se ejecutan todas o no se ejecuta ninguna.
- Arrays asociativos: Son arrays que usan como índices una cadena a diferencia de los arrays normales. Por ejemplo; $_POST o $_GET.
- printf: Imprime por pantalla un texto formateado. La f del final indica que se formateará el texto. Cada vez que aparece % aplica el formato que se indica en los prámetros que siguen. Printf (%parámetro1, %parametro2, %parametro3, formato1, formato2, formato3);printf(«%02.2f», $valor)… El número formateado será float, con dos decimales y dos números enteros.
- print_r: Imprime la estructura y los valores de un array.
- strchr: Busca una cadena dentro de otra cadena. Comienza a buscar por el principio de la cadena en la que busca. Si no encuentra toda la cadena buscada devuelve un resultado vacío. Distingue entre mayúsculas y minúsculas.
- strrchr: Busca dentro de una cadena empezando por el final (de ahí la r después del str). Solo busca el primer caracter de la cadena a buscar e imprime todo lo que hay después del caracter encontrado. En caso de no encontrar nada devuelve una variable vacía. Distingue entre mayúsculas y minúsculas.
- stristr: Busca un patrón dentro de una cadena. No es susceptible a mayúsculas o minúsculas. Comienza a buscar por el principio de la cadena.
- strstr: Busca una cadena dentro de otra cadena. Es sensible a mayúsculas y minúsculas.
- strpos: Nos da la posición en la que comienza la cadena que buscamos, tiene que encontrar la cadena buscada, sinó devuelve un resultado vacío. Comienza en la posición 0. No tiene en cuenta los espacios en blanco.
- strspn: Devuelve la longitud de la cadena que se busca en otra cadena. Cuenta también los espacios en caso de encontrarlos. Empieza buscando por cada caracter de cada palabra de la cadena donde se está buscando, en caso de no estar ese primer caracter, salta a la siguiente palabra para buscar. strspn («primera cadena23», «1234567890»); … Esta operación devolverá 2 ya que encontrará el 23 de la primera cadena en la segunda cadena.
- strcspn: Busca en una cadena el trozo que no contiene los caracteres a buscar. Cuando encuentra los caracteres buscados, desecha el resto y devuelve el número de caracteres que no están contenidos en la cadena donde se está buscando.
- strcmp: Viene a ser como comparar. Distingue entre mayúsculas y minúsculas. Resta la cadena1 y la cadena2. Devuelve 0 si las cadenas son iguales. Si devuelve positivo la primera cadena es mayor, si devuelve negativo la segunda cadena es la mayor. Hace una comparación a nivel de caracteres ASCII, restando los valores de cada caracter. De esta resta es de donde se obtienen los positivos, negativos y el cero. Es muy útil dentro de un algoritmo de ordenación.
- strcasecmp(cadena1, cadena2): Hace lo mismo que strcmp solo que no diferencia entre mayúsculas y minúsculas.
- strncmp(cadena1, cadena2, 5): Es igual que strcmp con la diferencia de que se puede especificar el límite superior del número de caracteres desde cada string que va a ser usando en la comparación.
- strnatcmp: Compara y ordena strings alfanuméricos de la manera en que un humano lo haría, lo cual se describe como «orden natural». Hay que tener en cuenta que esta comparación es sensible a mayúsculas y minúsculas. Sigue el orden natural de los número y con las letras sigue el orden de los caracteres ASCII.
- substr: Busca subcadenas. Primero se indica la cadena donde buscar. Tiene dos parámetros, el tercer parámetro es opcional. Este tercer parámetro indica cuantos caracteres se toman. Esta opción toma también los espacios en blanco. Se queda con un pedazo del string a partir del valor que indicamos como inicio. substr(cadena,2) –> comienza en la posición 2 (empieza a contar en 0). Devuelve todo lo que encuentre desde la posición de inicio. Para empezar por el final se puede empezar con números negativos. Por el final no se empieza por 0. Si se empieza por el final devuelve los valores encontrados desde el punto de inicio hasta el final de la cadena.
Cuando tiene tres parametros, el tercer parámetro indica la logintud de la cadena a devolver.
substr(cadena,lugade_de_inicio, logintud_cadena_devuelta). - substr_replace: Remplaza los caracteres de la segunda cadena por los caracteres de la primera cadena. Se le indica el inicio y como parámtro opcional tien el tamaño de la cadena a remplazar. el primero parámetro después de la segunda cadena indica el inicio y el siguiente parámetro (opcional) indica el tamaño, si no se indica el tamaño coge todo el string desde la posición de inicio. Con esta función se pueden integrar string dentro de otros strings. En caso de que el tamaño sea negativo, comienza por el final del string contenedor (la primera de las cadenas). substr_replace(cadena1,cadena2,inicio,tamaño). Las funciones no alteran las cadenas original. El valor resultante se debería guardar en una variable para poder usar el contenido.
- str_replace: Remplaza el patrón dentro de la cadena original y lo cambia por la cadena que le indiquemos. Distingue entre mayúsculas y minúsculas. El patrón tiene que estar todo junto. str_replace(patron, remplazo, cadena).
- strtr: Busca el patrón (no tienen por que estar juntas las letras) dentro de una cadena y lo sustituye por el reemplazo. Distingue entre mayúsculas y minúsculas. La longitud del patrón y del remplazo debería ser la misma. Los parámetros que se le pasan pueden ser strings o arrays asociativos. Al usar arrays asociativos se puede sustituir un caracter por más de un carácter.
- substr_count: Cuenta los caracteres que buscamos dentro d
e una cadena. Devuelve un número, que es el número de veces que se encuentra el string del patrón dentro de la cadena. - chop: Elimina los espacios anteriores de la cadena. Se carga los finales de la línea.
- rtrim: Elimina los espacios a la derecha del string.
- ltrim: Elimina los espacios a la izquierda del string.
- trim: Elimina los espacios de delante y detrás del string.
- str_pad: Pad viene de padding (relleno). Rellena después de una cadena. Se le pasan como parámetros la cadena, el temaño del relleno, el carácter de reelno y como parámetro opcional se le puede indicar por dónde rellena.
- strtoupper: Transforma una cadena entera a mayúculas.
- strtolower: Transformar a minúculas un string entero.
- ucfirst: Transforma el primer carácter de cada palabra de un string en mayúscula.
- ucwords: Transforma en mayúsculas las primeras palabras.
- addslashes: Añade sliash apartir de las comillas sobles, comillas simples o el propio slash.
- stripslashes: Elimina los slash de una cadena. Es el contrario a addslashes.
- addsslashes: Añade slash a los caracteres especificados como segundo parámetro. Se le añade el slash antes del caracter espacial. a esto se le llama enmascarar caracteres. addcslashes (cadena, simbolos especiales como string)
- quotemeta: Devuelve una cadena igual a la original menos los caracteres especiales. (Las operaciones matemáticas básicas, corchetes, llaves, signo de interrogación y signo del dolar). Cuando ve uno de estas caracteres lo sustituye por un slash.
- stripcslashes: Quita los slash de una cadena.
- strtok: String y token (token es patrón). Se le pasa una cadena y un patrón la primera vez, la segunda vez solo se le pasa el patŕon si se usa en un bucle para comprobar que no se terminó la cadena a partir. Esta función devuelve un trozo de string de la cadena original.
- chunk_split: Introduce caracteres dentro de una cadena. Como parámetros se le pasa la cadena, la logintud y el caracter a introducir como un string.
- explode: Con el caracter que se meta como patŕon se divide la cadena. Como parámetros se le pasa el patrón para dividir la cadena, después se le pasa la cadena y como parámetro final se le pasa el límite de elementos que nos devuelve( es el número de subcadenas que nos devuelve). Devuelve un array.
- implode: Une un string con un elemento de unión que se pasa como string. se le pasa el elemento de unión y el array de datos.
- htmlspecialchars: Los caracteres especiales de html son «», &, <, >. Se usa esta función para representar los caracteres especiales de HTML (&codigo;).
- strrev: Con esta función se le da la vuelta a la cadena que se le pasa por parámetro.
- strtotime: Pasa un string a formato fecha. El problema es que lo pasa a formato unix (comenzando a contar desde 1970).
- Arrays: Existen arrays multidimensionales y arrays simples. Los simples llevan el indice entre corchetes. En el último vale de la matriz se puede dejar sin coloar el índice ya que tomará el siguiente valor del índice. Nunca sobreescribe una posición. Siempre añade el nuevo valor al final en caso de que no se indique una posición del array vacía (no busca huecos libres). Se puede indicar la posición del array simple de las siguientes maneras: array (dato1, dato2, dato3,…) o array (indice=>dato1, indice=>dato2, indice=>dato3).
El array multidimensional se puede considerar un array de arrays. Cada una de las posiciones del array multidimensional contendrá un array simple. Para imprimir el contenido de una matriz multidimensional habrá que hacer tantos fucles como indices tenga la matríz. - count o size_of: Cuenta o da el tamaño de los elementos de un array. Count cuenta todos los elementos, incluídos los elementos erroneos. Size_of no cuent alos elementos erroneos o nulos.
- key (indice en array): Nos da el índice de una matriz. El índice solo se puede obtener con esta función. Current nos da el valor actual según el índice.
- next: Hace ir hacia adelante el puntero de un array mientras exista un próximo contenido en la matriz. Avanza el puntero y el contenido de la matriz. Devuelve un valor FALSE al llegar al último valor. En caso de que el contenido sea NULL se detiene el recorrido de la matriz o si es cero o una cadena vacía también se detiene.
while(next(matriz1)){
reset(matriz1)//devuelve la matriz al principio
representación de la matriz
}
- reset(matriz):Devuelve la matriz y su puntero al principio para poder ser representada. Te devuelve el primer valor. reset(matriz);
- current: Con current representamos el contenido de la matriz. Debe estar dentro de un bucle.
- end: Nos lleva al final de la matriz. Nos devuelve el valor de la matriz.
- prev: Mientras exista algo en el valor anterior de la matriz. Si alguno de los valores es NULL se para el recorrido, para también si el valor es cero o si el contenido es una cadena vacía.
- each y list: Después de finir la matriz con la que trabajar each nos devuelve la clave y el valor asignado a la posición de la clave. List asocia el valor de la posición, ordenandolos. Trabaja igual con matrices de índice asociativo o con índice numéricos.
while(list($pos, $valor)=each($matriz)){
echo $valor;
echo $pos
}
- arrays_keys y arrays_values: Teniendo una matriz con índices numéricos e índices asociativos, $clave = array_keys($matriz), devuelve las claves en forma de matriz. Devuelve los índices en forma de matríz númerica a pesar de que los índices sean numéricos o asociativos. Y se muestran como los valores que guardaba la otra matriz. Como parámetro opcional (segundo elemento) se le puede pasar un valor que contenga alguna de las posiciones del array. Con esto devolverá solo los índices que contengan como valor indicado a array_keys en su segunda opción. $valores = array_valur($matriz) devuelve los valores en forma de array.
- sort y rsort: Sirve para ordenar una matríz al derecho (sort) u ordenarla al revés (rsort).
- asort y arsort: Mantienen la correlación entre los índices y las claves pero ordenando la matríz usando el valor. Uno ordena al derecho y otro al revés.
- ksort: Ordena la matriz por su índice. Mantiene la relación entre el índice y su valor.
- usort y uksort: Con usort ordenamos una matriz según una función que define el usuario previamente. No guarda correlación entre los índices y el valor asignado al índice antes del ordenamiento. A la función ordenarValores no se le podrían pasar los dos parámetros por que al llamar a la función ordenadorValores se le pasan los valores de la matríz y ordena toda la matríz tomando de cada vez índice y valor
function ordenarValores($a,$b){
$fina=$a[strlen($a)-1];
$finb=$b[strlen($b)-1];
if $fina==$finb return 0;
return ($fina>$finb) ? 1 : -1;
}
La función ordenarValores se pasa como string.
usort($matriz,"ordenarValores")
while(list($pos, $valor)=each($matriz){
echo $pos;
echo $valor;
}
Con uksort ordena los valores mediante una función definida por el usuario, respetando la correlación entre índices y valores.
function ordenarClave($a,$b){
$a=$a%2;
$b=$b%2;
if ($a==$b) return 0;
return ($a>$b) ? 1 : -1;
}
uksort($matriz,"ordenarValores")
while(list($pos, $valor)=each($matriz){
echo $pos;
echo $valor;
}
- uasort: Función definida por el usuario que mantiene la correlación entre los índices y los valores.
- array_merge: Función que fusiona arrays. Los elementos con índices asociativos los reemplaza. Evita duplicar el índice. Los índices son correlativos, evitando duplicarlos.
- array_pad: Rellena un número de posiciones indicada (si es positivo rellena hacia la derecha y si es negativo rellena hacia la izquierda), como tercer parámetro se le pasa el caracter con el que rellenar.
- array_walk: Después de definir una función para trabajar los datos, se pasa cada valor de un array por dicha función. A la función hay que pasarle dos parámetros. El valor del array cuando se usa array_walk hay que pasarlo por referencia (&) siempre, pero también se puede modificar la clave de los valores, pasándolo también por referencia.Array_walk deja el puntero al final del array, por lo que para poder recorrer el array y mostrar el resultado de psar la función es necesario aplicar reset al array, para devolver el puntero al principio del array. array_walk (array, función);
- &valor: El & significa que la variable se pasa por referencia. Al salir de la función a donde se pase el valor por referencia, el valor que le asigne la función será el que tenga.
- array_slice: Mueve la matriz un número de posiciones. Por lo que eliminará las posiciones que se salta para empezar. También se le pueden eliminar posiciones con un tercer parámetro, este si es positivo elimina a la derecha y si es negativo elimina hacia la izquierda. array_slice($matriz,sitio_dd_empieza,valor_a_eliminar)
- array_splice: Array que permite sustituir elementos. Por lo demás se comporta igual que array_slice. En principio sirve para eliminar valores: array_splice($matriz,desplazamiento_desde_el_que_empieza_a_eliminar)Eliminamos valores y los sustituimos por otros con:
array_splice($matriz,lugar_de_comienzo,valores_a_eliminar,array(valores nuevos))Muestra elementos por el final con:
array_splice($matriz,comienzo,ultimo elemento mostrado (en negativo))Si el desplazamiento es negativo se empieza desde el final hasta el principio. - array_push, array_pop, array_unshift y array_shift: Push sería meter el valor por encima de la pila y pop sería sacar del array de la pila por arriba. Para meter por la parte de abajo de la pila se usa Unshift y para sacarlo del array se usa shift. Básicamente meten o sacan datos al principio o al final de un array. Al sacar los datos o al meterlos se modifican los índices del array.
- funciones: Para declarar una función se declara con function nombre(){}.Dentro de las llaves se coloca el código, y para llamarla se llama a la función por el nombre. Se le pueden pasar parámetros o no a la función, y estos parámetros pueden pasarse: por valor (valor=$nombre), por referencia (&$nombre) o por defecto ($nombre).
- func_num_args: Función que indica el número de argumentos que se le pasan.
- func_get_args: Función que obteien los argumentos, en forma de arrays. Devuelve todo el array. En caso de quere uno solo de los varlores del array se usa func_get_arg($variable), en este caso nos devuelve uno de los valores, que se le pasa en la variable.
Para más información sobre PHP … dirigirse a php.net.