Menú
Es gratis
registro
casa  /  Educación/ ¿Cómo obtener el primer elemento de una matriz asociativa de PHP? Fútbol: por qué el portero del CSKA Akinfeev fue eliminado en el partido contra el Real Madrid Php array el primer elemento.

¿Cómo obtener el primer elemento de una matriz asociativa de PHP? Fútbol: por qué el portero del CSKA Akinfeev fue eliminado en el partido contra el Real Madrid Php array el primer elemento.

Reg.ru: dominios y hosting

El mayor registrador y proveedor de hosting de Rusia.

Más de 2 millones de nombres de dominio en servicio.

Promoción, correo por dominio, soluciones para empresas.

Más de 700 mil clientes en todo el mundo ya han hecho su elección.

Bootstrap Framework: diseño de respuesta rápida

Video curso paso a paso sobre lo básico diseño adaptativo en el marco Bootstrap.

Aprende a componer de manera simple, rápida y eficiente, usando una herramienta poderosa y práctica.

Maquillar a la orden y obtener dinero.

*Mouseover para pausar el desplazamiento.

De vuelta atras

PHP: Eliminación de elementos de matriz

Nos enfrentamos a una tarea aparentemente trivial: eliminar un elemento de matriz. O varios artículos.

Sin embargo, a pesar de su sencillez, tiene opciones que no son del todo obvias, y que vale la pena conocer si quieres avanzar en PHP un poco más allá de "¡Hola, mundo!" :)

Comencemos con la base en sí: para eliminar un elemento, debe usar la función desarmar():

unset($matriz); unset($arreglo["foo"]);

unset($matriz, $matriz); unset($arreglo["foo"], $arreglo["barra"]);

La siguiente pregunta lógica es cómo eliminar varios elementos que se suceden entre sí (es decir, adyacentes)? Para eliminar varios elementos adyacentes, utilice la función matriz_empalme():

Array_splice($matriz, $desplazamiento, $longitud);

Tenga en cuenta que al utilizar estas funciones, se pierden todas las referencias a estos elementos. Si desea dejar la clave en la matriz pero vincularla a un valor vacío, asigne elemento deseado línea vacía:

$matriz = $matriz["foo"] = "";

Es importante entender que la función desarmar() elimina el elemento, mientras que asignar "" al elemento no lo elimina, pero significa que su valor se vuelve igual a la cadena vacía.

Si está trabajando con números, probablemente sea mejor asociar el valor 0 con esa clave.

Digamos que si una empresa deja de fabricar piezas del modelo HBL-568, puede realizar un cambio en la matriz de piezas:

Unset($productos["HBL-568"]);

Si la pieza HBL-568 está temporalmente agotada y se espera que llegue de fábrica, entonces es mejor hacer lo contrario:

$productos["HBL-568"] = 0;

El siguiente punto a entender es que al llamar a una función desarmar() para un elemento de matriz, PHP ajusta la matriz para que el ciclo aún funcione correctamente.

En otras palabras, la matriz no se comprime para llenar los "agujeros" resultantes. Esencialmente, esto significa que todas las matrices son asociativas, incluso si parecen numéricas a primera vista. Veamos ejemplos claros para ilustrar este comportamiento:

// Crear una matriz de "números" $animales = matriz("hormiga", "abeja", "gato", "perro", "alce", "zorro"); imprimir $animales; // Imprime "abeja" print $animales; // Imprime el conteo de "gatos" ($animales); // Devuelve 6 // unset() unset($animales); // Elimina el elemento $animales = "abeja" print $animales; // No genera nada y arroja un error E_NOTICE print $animals; // Imprime el conteo de "gatos" ($animales); // Devuelve 5 mientras el elemento $array permanece en su lugar y contiene "zorro" // Agrega un nuevo elemento $animales = "gnu"; // Agrega un nuevo elemento print $animales; // No genera nada, también arroja un error E_NOTICE print $animals; // Muestra el conteo "gnu" ($animales); // Devuelve 6 // Asigna "" (cadena vacía) $animales = ""; // Establecer en "cadena vacía" print $animales; // Muestra "" contar ($animales); // Devuelve 6, es decir considera un elemento de matriz vacío al contar

Para saltar a una matriz numérica densamente poblada, use la función array_values():

$animales = array_values($animales);

Además, la función array_splice() reindexa automáticamente las matrices para eliminar los "agujeros":

// Crear una matriz de "números" $animales = matriz("hormiga", "abeja", "gato", "perro", "alce", "zorro"); array_splice($animales, 2, 2); print_r($animales);

En la salida obtenemos:

Matriz ( => hormiga => abeja => alce => zorro)

¿Dónde podría ser útil esta oportunidad?

Digamos que está trabajando con una matriz como una cola y desea eliminar elementos de esta cola sin perder la posibilidad de acceso aleatorio cuando podría caer accidentalmente en uno de los "agujeros" resultantes.

Y finalmente, por eliminación segura el primer o último elemento de la matriz son funciones utilizadas array_shift() Y array_pop() respectivamente.

Todo es muy simple con ellos:

$pila = array("naranja", "plátano", "manzana", "frambuesa"); $fruta = array_shift($pila); print_r($pila);

Como resultado de ejecutar el código anterior, obtendremos el siguiente resultado:

Matriz ( => plátano => manzana => frambuesa)

Para eliminar el último elemento, use la función array_pop():

$pila = array("naranja", "plátano", "manzana", "frambuesa"); $fruta = array_pop($pila); print_r($pila);

En la salida, obtenemos la siguiente matriz impresa:

Matriz ( => naranja => plátano => manzana)

Eso es todo. Hemos cubierto los puntos principales sobre la eliminación de elementos de matriz en PHP. En todo caso, la documentación oficial siempre es de ayuda.

¿Te gustó el material y quieres agradecer?
¡Solo comparte con tus amigos y colegas!


Ver también:

La tarjeta roja del héroe de la Copa del Mundo 2018, por cierto, sucedió ya en el tiempo de descuento. Más específicamente, al final.

Los cuatro agregados por el árbitro rumano Ovidiu Hatsegan terminaron (o incluso terminaron), y el portero de la selección ... oh, no, la selección rusa ya no, Akinfeev completó recientemente sus actuaciones para la selección, por alguna razón se apresuró. probar algo al juez.

Dime, ¿quién y cuándo, con la excepción, por supuesto, de casos individuales en el marco del error estadístico, en tal situación buscó justicia? (Sí, y es difícil decir qué entendía Igor por justicia aquí: bueno, incluso si hubo alguna falta por parte del equipo de Madrid, ¿valió la pena?).

Más a menudo logran algo más: una tarjeta amarilla o roja.

Akinfeev recibió ambos. Primero, amarillo, luego, continuando con la diatriba emocionada, obtuvo otro, y luego, respectivamente, el rojo.

¿Qué dijo exactamente el portero? ¿En qué idioma: inglés, rumano, ruso? ¿Hablaba obscenidades o no hablaba obscenidades?

Nadie lo sabe con certeza, excepto el propio Igor y los compañeros más cercanos al episodio. Y no te lo dirán todo.

Estoy seguro de una cosa: la comunidad deportiva y casi deportiva discutirá esto durante mucho tiempo. Como ocurrió con la frase del italiano Marco Materazzi, a la que siguió la mítica eliminación del francés Zinedine Zidane en la final del Mundial de 2006...

Sea como fuere, Akinfeev defraudó al equipo. Y ahora se perderá al menos un partido importante de la Champions League. En la 3ª jornada del torneo de grupos de Roma.

Y por eso me gustaría esperar que no más: por lo general, después de todo, una tarjeta roja por dos advertencias no significa lo contrario.

Sin embargo, esta eliminación de Akinfeev fue solo el episodio final de la magnífica batalla de la liga de fútbol. O, casi definitivo: todavía había una sustitución cinematográfica directa (afortunadamente, Gancharenko Viktor Mikhailovich se dejó una en la manga) del portero de reserva: Georgy Kyrnats, de 20 años. El comienzo, apenas conocido por el público en general, la carrera de un jugador de fútbol desde los 5 años ... en Spartak Sokolniki.

Pero Kyrnats ni siquiera sacó el balón de la portería. Los socios más experimentados lógicamente razonaron que el joven portero puede no tener suficiente experiencia (¡lo tomará y zamandrazhivat en un momento crucial!). E incluso solo la fuerza física, especialmente para calentar, no había tiempo.

Por cierto, queda simpatizar en este momento con la destitución de Astemir Gordyushenko, quien ya está listo para reemplazar al equipo del ejército: el chico no participó en la victoria sobre el Real Madrid.

Y no hay duda de que esta victoria debe llamarse histórica. Aún así, por ejemplo, el Spartak de Moscú, cuando venció al mismo Real Madrid en otoño de 1998 (hace veinte, da miedo pensar, años atrás), estaba mucho más cerca de los gigantes continentales en cuanto a nivel: no habían pasado tres años después. ¡6 victorias en 6 partidos en el grupo de la Champions League 1995/96!

¿Hubo batallas tan notables ganadas en el cuadro principal del principal torneo de fútbol europeo por el CSKA? En mi opinión, no.

Aquí en otros torneos, por supuesto, sucedió. Sí, y puedes, el muñón está claro, recuerda clasificación para la primera Champions League y una maravillosa victoria en Barcelona (también, por cierto, sobre el actual poseedor del trofeo). Pues los playoffs de la Champions League, donde Victoria destaca ante todo en la suma de dos encuentros con el Sevilla, que en su día llevó al conjunto del ejército a cuartos de final...

Pero en la carrera de Viktor Gancharenko personalmente, sucedió algo diferente en el grupo: por ejemplo, con BATE (un equipo modesto para los estándares europeos de un modesto incluso para los estándares bielorrusos de la ciudad de Borisov) ganó, ¡a la edad de 35 años! - Bayern Munich. En el mismo sorteo de la Champions League en el que los alemanes finalmente se llevaron el premio principal...

¿Qué razones debemos señalar como las más importantes al hablar del próximo éxito europeo de Viktor Mikhailovich, además de su propio talento, por supuesto?

Primero, gran jugada, sin tener en cuenta el ataque de nervios al final, Akinfeev. En segundo lugar, el Real Madrid no llegaba en la plantilla más fuerte (por ejemplo, sin el defensa Sergio Ramos, sin el lateral izquierdo brasileño Marcelo y sin uno de los líderes del ataque, el galés Gareth Bale; y por otro lado, ¿no te bastan? estrellas del fútbol mundial como el que arrastró a la selección croata a la final del Mundial 2018 Luka Modric, el español Asensio, el alemán Toni Kroos, el francés Raphael Varane, ¿el portero costarricense Keylor Navas al final?).

Además, en alguna parte tuvimos suerte, por supuesto, con los largueros, en los que se metieron el brasileño Casemiro y el francés Karim Benzema, y ​​con un rápido gol de Nikola Vlašić, nuestro croata eclipsó al ya mítico compatriota, que recientemente recibió el premio a la mejor. jugador del mundo.

Pero un gol marcado es un gol marcado, y después de eso, había que luchar desesperadamente con el propio Real Madrid, ganando las artes marciales. Y también construyendo claramente reductos defensivos. Lo cual es genial para el TSEskovtsy y tuvo éxito.

Y, otra referencia a la Copa del Mundo de 2018, que es nuestro hogar. Más cerca del pitido final, me vino a la cabeza un chiste: “Ni siquiera estar despedido antes del inicio del Mundial salvó a Julen Lopetegui (recordemos que precisamente por marcharse a la Real le pidieron desde la selección española la tiempo con cosas para salir?) de la derrota en "Luzhniki" ... "

La única pena es que esta vez todo terminó no con la "pierna de Dios", sino con la estúpida eliminación de Akinfeev. ¡Quiero creer, diré nuevamente que costará una descalificación de 1 partido!

Entonces, tenemos una matriz $arr y necesitamos obtener el primer elemento de esta matriz.

No puedes simplemente hacer esto:

$primero = $arr;

El elemento en el índice 0 puede simplemente no estar definido. Por ejemplo, si la matriz es asociativa, o lo hicimos unset($arr) .

Método 1

$primero = restablecer($arr);

Al usar reset obtenemos el primer elemento, sin embargo, hay un efecto secundario: el puntero de la matriz también se restablece al primer elemento. Aunque, en principio, esta función está destinada a resetear el puntero. Documentación para la función reset().

Tenga en cuenta que si la matriz está vacía, reset() devolverá falso, y este resultado será indistinguible del caso cuando la matriz no está vacía pero contiene falso como primer elemento.

$a = matriz(); $b = matriz(falso, verdadero, verdadero); var_dump(restablecer ($a) === restablecer ($b)); //bool(verdadero)

Método 2

Puede usar la función array_shift: extrae el primer elemento y al mismo tiempo lo elimina de la matriz pasada. Documentación para array_shift().

$primero = array_shift($arr);

Método 3

Escribe tu propia función para estos propósitos:

Función array_first($array, $default = null) ( foreach ($array as $item) ( return $item; ) return $default; )

La ventaja es que no cambia la matriz original. También puede pasar el parámetro $default, que se utilizará como valor predeterminado si la matriz está vacía.

Por cierto, esta función ya está definida en el marco de Laravel y le permite especificar una devolución de llamada a la que puede pasar una condición. Por ejemplo, puede tomar el primer elemento que es mayor que 10 o el primer elemento que no es un número.

Aquí está el código para una función más avanzada:

Función array_first($array, callable $callback = null, $default = null) if (is_null($callback)) ( if (empty($array)) ( return $instancia predeterminada de Closure ? $default() : $default; ) foreach ($array as $item) ( return $item; ) ) foreach ($array as $key => $value) ( ​​if (call_user_func($callback, $value, $key)) ( return $value; ) ) devolver $instancia predeterminada de Closure? $predeterminado() : $predeterminado; )

Se puede usar así por ejemplo:

$matriz = ; $first = array_first($array, function ($value, $key) ( return $value >= 150; )); echo $primero; // 200

Método 4

La función current() también es adecuada para obtener el primer elemento de una matriz.
Ejemplo de uso:

$transporte = array("pie", "bicicleta", "coche", "avion"); $modo = actual($transporte); // $modo = "pie";

Más precisamente, esta función se usa para devolver el elemento en el que se encuentra el puntero de la matriz interna. En la mayoría de los casos, el puntero está en el primer elemento; sin embargo, hay situaciones en las que se puede devolver un elemento que no es el primero.

$transporte = array("pie", "bicicleta", "coche", "avion"); siguiente ($transporte); // mueve el puntero hacia adelante (http://php.net/manual/ru/function.next.php) $mode = current($transport); // $modo = "bicicleta"; - es decir, el segundo elemento de la matriz ya ha regresado.

Gracias al comentarista Alexey Berlinskiy por este método.

Si aún sabe cómo obtener el primer elemento, escriba en los comentarios.

¿Te resultó útil este artículo

Si no sabe lo suficiente sobre la matriz (no está seguro de si la primera clave es foo o bar), entonces la matriz también podría serlo, tal vez vacío.

Por lo tanto, sería mejor verificar, especialmente si existe la posibilidad de que el valor devuelto sea booleano FALSO:

$valor = vacío ($arr) ? $predeterminado: reset($arr);

El código anterior usa reinicio y así tiene efectos secundarios(restablece el puntero interno de la matriz), por lo que es posible que prefiera usar array_slice para acceso rapido a una copia del primer elemento de la matriz:

$valor = $predeterminado; foreach(array_slice($arr, 0, 1) como $valor);

Suponiendo que quieres conseguir clave y valor por separado, debe agregar un cuarto parámetro a array_slice:

Foreach(array_slice($arr, 0, 1, true) as $clave => $valor);

Para obtener el primer elemento como pareja(clave => valor):

$elemento = array_slice($arr, 0, 1, true);

Modificación fácil de obtener último elemento, clave y valor por separado:

Foreach(array_slice($arr, -1, 1, true) as $clave => $valor);

espectáculo

Si la matriz no es muy grande, realmente no necesita array_slice y puede obtener una copia de toda la matriz de claves y luego obtener el primer elemento:

$clave = cuenta($arr) ? array_keys($arr) : nulo;

Sin embargo, si tiene una matriz muy grande, llamar a array_keys requerirá una cantidad significativa de tiempo y memoria más que array_slice (ambas funciones atraviesan la matriz, pero esta última sale tan pronto como array_slice tenga la cantidad requerida de elementos, es decir, uno),

Una excepción notable es cuando tiene una primera clave que apunta a un objeto muy grande y con curvas. En este caso, array_slice duplicará ese primer objeto grande y array_keys solo capturará las claves.

PHP 7.3

PHP 7.3 implementa array_key_first() y array_key_last() . Se proporcionan explícitamente para el acceso eficiente a la primera y la última clave sin restablecer el estado interno de la matriz como efecto secundario.

Entonces, en PHP 7.3, se puede acceder al primer valor de $array con

$matriz;

Es mejor que verifique que la matriz no esté vacía, de lo contrario obtendrá un error:

$primeraClave = arreglo_clave_primero($arreglo); if (null === $firstKey) ( $value = "(!LANG:Array está vacío"; // An error should be handled here } else { $value = $array[$firstKey]; }!}

1.9K

Las matrices de PHP son una forma de organizar y usar datos. En pocas palabras, una matriz es una lista. Aquí hay un breve ejemplo de una matriz cuyos elementos son los nombres de los modos de transporte:

$transporte = array('Aviones', 'Trenes', 'Automóviles');

Para facilitar la lectura, puede escribirlo así:

$transporte = array('Aviones', 'Trenes', 'Automóviles');

La variable $transportation ahora contiene una lista de modos de transporte.

Visualización de elementos de matriz

Cada uno de los elementos de la lista anterior se denomina valor. Cada valor también tiene una clave. Si no establece una clave para el elemento usted mismo, se asignará automáticamente y será un número de serie. El siguiente es un ejemplo de trabajo con arreglos de PHP:

$transporte = array(0 => 'Aviones', 1 => 'Trenes', 2 => 'Automóviles');

=> es un operador de asignación y los números son claves. Tenga en cuenta que comenzamos desde 0 . Si configura las claves usted mismo, puede comenzar con 1 . Pero no recomiendo hacer esto porque numeración automática comienza en 0.

Obtenga el primer elemento de la matriz:

¿Ves la clave entre corchetes? Este código generará el valor "Aviones".

Claves de matriz personalizadas

También puede crear sus propias claves. Aquí hay un ejemplo de una matriz asociativa de PHP:

$web_site = array('Name' => 'OSTraining', 'URL' => 'http://ostraining.com', 'Purpose' => 'Education');

Y ahora puedes hacer algo como esto:

  • Nombre:
  • URL:
  • Propósito:

Y como resultado obtendrás lo siguiente:

  • Nombre: Entrenamiento OST;
  • URL: http://ostraining.com;
  • Propósito: Educación.

El uso de claves personalizadas facilita la definición de lo que genera. Para hacer esto, solo mire la clave de la matriz PHP de salida.

Ciclos

¿Qué sucede si no sabe cuántos elementos hay en una matriz o qué claves contiene? PHP usa el ciclo foreach para esto. Así es como funciona:

    $valor) ( echo '
  • ' . $clave. ':'. $valor. '
  • ’; } ?>

Esto es lo que hace este código:

  • A cada elemento de la matriz se le asigna una variable $key cuyo valor es igual a la clave del elemento. Y la variable $value , que es igual al valor del elemento. Luego ordenamos la matriz en PHP hasta que todos los elementos hayan sido procesados;
  • Este código generará el mismo lista con viñetas como he creado manualmente arriba.

Matrices multidimensionales

En una matriz multidimensional de PHP, todos sus elementos son matrices. Por ejemplo:

$personal = arreglo(0 => arreglo(['Nombre'] => 'Topher', ['Posición'] => 'De pie o sentado, cuando no está acostado'), 1 => arreglo(['Nombre'] => 'Steve', ['Posición'] => 'Escritor'));

Tenemos una matriz $staff con varias "personas". Podríamos crear varios bucles foreach para iterar sobre cada uno de ellos, por ejemplo:

foreach($personal as $clave => $persona) ( echo '

    '; foreach($persona as $atributo => $valor) ( echo '
  • ' . $atributo . ':' . $valor. '
  • '; ) eco '
’; }

En el ejemplo anterior, recorrí a cada persona, y dentro de cada persona, recorrí sus datos y luego los envié. Nombré los elementos de la matriz para que coincidan con el valor de las variables.

resumiendo

Cuando trabajamos con WordPress, a menudo ejecutamos consultas de base de datos con WP_Query y obtenemos una matriz bidimensional de datos de "Publicaciones" de PHP. Para hacer esto, puede usar foreach para procesar estas entradas y generarlas.

Ir más allá

Las matrices se pueden ordenar, combinar, comparar, sumar y reordenar. te recomiendo mucho leer la documentación oficial. La mayoría de las funciones de matriz tienen nombres claros para que pueda comprender lo que hacen.

Caracteristicas adicionales

Estos son algunos ejemplos de lo que puede hacer con matrices:

Este código calcula cuántos elementos hay en la matriz. Por ejemplo, puede generar " Encontrados 14 elementos que coinciden con los criterios de búsqueda» ( documentación).