Verificación de tipos de interfaces en TypeScript: preguntas frecuentes y respuestas

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

La magia de un contenedor vacío: Cómo hacer que PHP trabaje para ti

\n\n

Imagina: estás escribiendo un script de PHP y necesitas recolectar datos — por ejemplo, IDs de productos de un carrito de compras. Creas un array vacío, luego agregas elementos en un bucle. Parece bastante simple, ¿verdad? Pero es precisamente este momento — agregar elementos a un array vacío de PHP — el que genera miles de preguntas en Stack Overflow. ¿Por qué? Porque los principiantes a menudo confunden la sintaxis, y los desarrolladores experimentados quieren entender qué sucede "bajo el capó".

\n\n

En este artículo, no solo te mostraremos cómo escribir el código correctamente. Analizaremos el núcleo de PHP (Zend Engine), desglosaremos cómo $arr[] = $value se diferencia de array_push(), y descubriremos qué sorpresas tiene preparadas PHP 8.1. ¿Listo? ¡Vamos!

\n\n

La pregunta más común: ¿Cómo agregar un elemento?

\n\n

Si eres principiante, lo primero que probablemente te viene a la mente es escribir algo como:

\n\n
<?php\n$myArray = array(); // array vacío\n$myArray[] = 'primer elemento';\n$myArray[] = 'segundo elemento';\nprint_r($myArray);\n?>
\n\n

Este código mostrará:

\n\n
Array\n(\n    [0] => primer elemento\n    [1] => segundo elemento\n)
\n\n

¿Funciona? Sí. Pero ¿por qué? Analicemos qué hace realmente el operador [].

\n\n

El operador $arr[] = $value: Rápido y elegante

\n\n

Cuando escribes $arr[] = $value, PHP no llama a ninguna función. En su lugar, accede directamente a la estructura de datos interna del array (zend_array en términos del Zend Engine).

\n\n

Qué sucede bajo el capó:

\n
    \n
  • PHP verifica si el array existe. Si no, crea uno nuevo (pero siempre es mejor inicializarlo explícitamente: $arr = []).
  • \n
  • Agrega el elemento al final del array, asignándole automáticamente la siguiente clave numérica (0, 1, 2...).
  • \n
  • Si el array estaba vacío, el primer elemento obtiene la clave 0.
  • \n
  • Sin sobrecarga de llamada a función. Esta es la forma más eficiente.
  • \n
\n\n

Consejo: usa $arr[] = ... siempre que simplemente necesites agregar un elemento al final. Es rápido, legible y no requiere importar funciones.

\n\n

array_push(): Cuando necesitas agregar múltiples elementos a la vez

\n\n

El segundo método popular es la función array_push():

\n\n
<?php\n$myArray = [];\narray_push($myArray, 'primero', 'segundo', 'tercero');\nprint_r($myArray);\n?>
\n\n

El resultado será el mismo. Pero hay matices:

\n
    \n
  • array_push() toma el array por referencia y agrega todos los valores pasados al final.
  • \n
  • Devuelve el nuevo número de elementos en el array (a partir de PHP 7.3).
  • \n
  • Bajo el capó: la función llama al procedimiento interno zend_hash_next_index_insert para cada elemento. Esto significa que si estás agregando un solo elemento, array_push() es ligeramente más lento que $arr[] = ... debido a la sobrecarga de la llamada a la función.
  • \n
\n\n

Cuándo usarlo: solo si necesitas agregar múltiples elementos a la vez (2 o más). Para un solo elemento — olvídate de array_push, usa [].

\n\n

Array vacío y claves: ¿Qué pasa si las claves no son numéricas?

\n\n

¿Qué sucede si quieres agregar un elemento con una clave específica? Por ejemplo, un array asociativo:

\n\n
<?php\n$user = [];\n$user['nombre'] = 'Iván';\n$user['edad'] = 30;\n?>
\n\n

Esto también es simple. El operador [] con una clave dentro de los corchetes ($arr['clave'] = valor) funciona como una asignación. Si la clave no existe, se crea. Si existe, se sobrescribe.

\n\n

Pero ten cuidado: si accidentalmente escribes $user[] = 'valor' junto a un array asociativo, PHP agregará una clave numérica.

Blogs

Book Recommendations