{"id":764,"date":"2016-09-13T22:55:15","date_gmt":"2016-09-14T04:55:15","guid":{"rendered":"http:\/\/projectopy.com\/blog\/?p=764"},"modified":"2016-09-13T22:55:15","modified_gmt":"2016-09-14T04:55:15","slug":"php-arreglos","status":"publish","type":"post","link":"https:\/\/iscodigo.com\/blog\/php\/php-arreglos\/","title":{"rendered":"PHP: Arreglos"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_72 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Tabla de Contenidos<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 eztoc-toggle-hide-by-default' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/iscodigo.com\/blog\/php\/php-arreglos\/#Creacion_de_un_Array\" title=\"Creaci\u00f3n de un Array\">Creaci\u00f3n de un Array<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/iscodigo.com\/blog\/php\/php-arreglos\/#Indexacion\" title=\"Indexaci\u00f3n\">Indexaci\u00f3n<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/iscodigo.com\/blog\/php\/php-arreglos\/#Recorrido_de_un_array\" title=\"Recorrido de un array\">Recorrido de un array<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/iscodigo.com\/blog\/php\/php-arreglos\/#Agregar_elementos\" title=\"Agregar elementos\">Agregar elementos<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/iscodigo.com\/blog\/php\/php-arreglos\/#Funcion_array_push\" title=\"Funci\u00f3n array_push\">Funci\u00f3n array_push<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/iscodigo.com\/blog\/php\/php-arreglos\/#Construccion\" title=\"Construcci\u00f3n []\">Construcci\u00f3n []<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/iscodigo.com\/blog\/php\/php-arreglos\/#Funcion_array_unshift\" title=\"Funci\u00f3n array_unshift\">Funci\u00f3n array_unshift<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/iscodigo.com\/blog\/php\/php-arreglos\/#Eliminar_elementos\" title=\"Eliminar elementos\">Eliminar elementos<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/iscodigo.com\/blog\/php\/php-arreglos\/#Funcion_unset\" title=\"Funci\u00f3n unset\">Funci\u00f3n unset<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/iscodigo.com\/blog\/php\/php-arreglos\/#Funcion_array_shift\" title=\"Funci\u00f3n array_shift\">Funci\u00f3n array_shift<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/iscodigo.com\/blog\/php\/php-arreglos\/#Funcion_array_pop\" title=\"Funci\u00f3n array_pop\">Funci\u00f3n array_pop<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/iscodigo.com\/blog\/php\/php-arreglos\/#Modificar_un_elemento\" title=\"Modificar un elemento\">Modificar un elemento<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/iscodigo.com\/blog\/php\/php-arreglos\/#Modificaciones_de_array_sin_recorrido\" title=\"Modificaciones de array (sin recorrido)\">Modificaciones de array (sin recorrido)<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/iscodigo.com\/blog\/php\/php-arreglos\/#array_sum\" title=\"array_sum\">array_sum<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/iscodigo.com\/blog\/php\/php-arreglos\/#array_product\" title=\"array_product\">array_product<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/iscodigo.com\/blog\/php\/php-arreglos\/#array_map\" title=\"array_map\">array_map<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-17\" href=\"https:\/\/iscodigo.com\/blog\/php\/php-arreglos\/#array_filter\" title=\"array_filter\">array_filter<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-18\" href=\"https:\/\/iscodigo.com\/blog\/php\/php-arreglos\/#array_reduce\" title=\"array_reduce\">array_reduce<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-19\" href=\"https:\/\/iscodigo.com\/blog\/php\/php-arreglos\/#Otras_funciones\" title=\"Otras funciones\">Otras funciones<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-20\" href=\"https:\/\/iscodigo.com\/blog\/php\/php-arreglos\/#Documentacion\" title=\"Documentaci\u00f3n\">Documentaci\u00f3n<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"Creacion_de_un_Array\"><\/span>Creaci\u00f3n de un Array<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Un array puede ser creado con el constructor del lenguaje <code>array()<\/code>. \u00c9ste toma cualquier n\u00famero de parejas clave =&gt; valor como argumentos.<\/p>\n<pre>array(\n    clave1 =&gt; valor1,\n    clave2 =&gt; valor2,\n    clave3 =&gt; valor3, ...\n);<\/pre>\n<p>Tambi\u00e9n, a partir de PHP 5.4, es posible realizar la siguiente notaci\u00f3n:<\/p>\n<pre>[\n    clave1 =&gt; valor1, \n    clave2 =&gt; valor2, ...\n]<\/pre>\n<p>Las clave solamente pueden ser del tipo entero o string. En todo si se utiliza otro tipo las consideraciones ser\u00e1n las siguientes:<\/p>\n<ul>\n<li>string con valores enteros v\u00e1lidos, se convertir\u00e1n en enteros.<\/li>\n<li>flotantes se convertir\u00e1n en enteros.<\/li>\n<li>booleanos pasar a ser enteros: false = 0 y true = 1.<\/li>\n<li>null se convertir\u00e1 en un string vac\u00edo.<\/li>\n<li>arrays y objects no puede ser claves.<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"Indexacion\"><\/span>Indexaci\u00f3n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ul>\n<li>Si no se elige la clave para un elemento del array, se incorpora el siguiente n\u00famero entero que corresponda.<\/li>\n<li>Si se inserta una clave que ya existe, el valor se sobrescribir\u00e1.<\/li>\n<li>Si un arreglo contiene clave enteras se denomina array indexado, y si contiene strings array asociativo.<\/li>\n<li>Un array puede ser indexado y asociativo al mismo tiempo.<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"Recorrido_de_un_array\"><\/span>Recorrido de un array<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Es posible utilizar las construcciones usuales como el <code>for<\/code> o <code>while<\/code> para recorrer un array, sin embargo, se recomienda el <code>foreach<\/code>, debido a las caracter\u00edsticas de los array en PHP.<\/p>\n<pre>$arreglo = array(               \n    'nombre' =&gt; 'Jose',\n    'identidad' =&gt; '0801199000123',\n    'nacimiento' =&gt; 'Tegucigalpa'\n);\n\n\/\/ Iteraci\u00f3n de un array\nforeach($arreglo as $clave =&gt; $valor) {\n    echo $clave, ': ', $valor, PHP_EOL;\n}\n<\/pre>\n<h2><span class=\"ez-toc-section\" id=\"Agregar_elementos\"><\/span>Agregar elementos<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Para agregar un elemento a un array se puede hacer uso de la funci\u00f3n:<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Funcion_array_push\"><\/span>Funci\u00f3n array_push<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Insertar\u00e1 en la \u00faltima posici\u00f3n uno o varios elementos.<\/p>\n<pre>$abecedario\u00a0= ['a', 'b', 'c'];\narray_push($abecedario, 'd', 'e', 'f');<\/pre>\n<h3><span class=\"ez-toc-section\" id=\"Construccion\"><\/span>Construcci\u00f3n []<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Tambi\u00e9n puede utilizarse la construcci\u00f3n <code>$array[]<\/code>, la cual\u00a0agrega un \u00edndice num\u00e9rico. Posee dos ventajas con respecto a la funci\u00f3n array_push().<\/p>\n<ol>\n<li>En caso de que no existe el array lo crea.<\/li>\n<li>Es m\u00e1s \u00f3ptimo.<\/li>\n<\/ol>\n<pre>$arreglo = ['a' =&gt; 1, 'b' =&gt; 2, 'c' =&gt; 3];\n\n\/\/ Agregar un elemento: clave = 0, valor = 4\n$arreglo[] = 4;\n\n\/\/ Agregar un elemento: clave = 'd', valor = 5\n$arreglo['d'] = 5;\n<\/pre>\n<h3><span class=\"ez-toc-section\" id=\"Funcion_array_unshift\"><\/span>Funci\u00f3n array_unshift<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Se pueden agregar uno o varios elementos al inicio de un array.<\/p>\n<pre>$ordinales = ['tercero', 'cuarto', 'quinto'];\n\n\/\/Agrega elementos al inicio de un array: array_unshift\narray_unshift($ordinales, 'primero', 'segundo');\n<\/pre>\n<h2><span class=\"ez-toc-section\" id=\"Eliminar_elementos\"><\/span>Eliminar elementos<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Para eliminar un elemento del array se puede usar las siguientes funciones:<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Funcion_unset\"><\/span>Funci\u00f3n unset<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Elimina el elemento del array seleccionado, deja intactas las claves que no se han eliminado.<\/p>\n<pre class=\"lang:php decode:true \" title=\"Eliminar elementos de un array en PHP\">$arreglo = [10, 20, 30, 40, 50, 60, 70];\n\n\/\/ Elimina el elemento con clave 2, valor = 30\nunset($arreglo[2]);<\/pre>\n<h3><span class=\"ez-toc-section\" id=\"Funcion_array_shift\"><\/span>Funci\u00f3n array_shift<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Extrae el elemento\u00a0inicial del array, restableciendo\u00a0las claves num\u00e9ricas.<\/p>\n<pre class=\"lang:php decode:true \" title=\"Eliminar elementos de un array en PHP\">$arreglo = [10, 20, 30, 40, 50, 60, 70];\n\n\/\/ Elimina al primer elemento, clave = 0 y valor = 10\narray_shift($arreglo);<\/pre>\n<h3><span class=\"ez-toc-section\" id=\"Funcion_array_pop\"><\/span>Funci\u00f3n array_pop<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Extrae el elemento\u00a0final del array.<\/p>\n<pre class=\"lang:php decode:true \" title=\"Eliminar elementos de un array en PHP\">$arreglo = [10, 20, 30, 40, 50, 60, 70];\n\n\/\/ Elimina el \u00faltimo elemento, clave = 6 y valor = 70\narray_pop($arreglo);<\/pre>\n<h2><span class=\"ez-toc-section\" id=\"Modificar_un_elemento\"><\/span>Modificar un elemento<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Las claves en un array son \u00fanicas, esto indica que si agrega un nuevo elemento con una clave existente lo que se logra es la sobrescritura. Para hacer esto se selecciona la clave y el nuevo valor a modificar el array.<\/p>\n<pre class=\"lang:php decode:true\" title=\"Modificaci\u00f3n de un elemento del array\">$arreglo = ['a' =&gt; 1, 'b' =&gt; 2, 'c' =&gt; 3];\n\n\/\/ Modificaci\u00f3n del elemento con clave 'a'\n$arreglo['a'] = 100;\n<\/pre>\n<h2><span class=\"ez-toc-section\" id=\"Modificaciones_de_array_sin_recorrido\"><\/span>Modificaciones de array (sin recorrido)<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>PHP tiene un cat\u00e1logo de funciones que permiten modificar u obtener resultados de los elementos que conforman un array, a partir de funciones ya establecidas que evitan el recorrido de cada elemento.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"array_sum\"><\/span>array_sum<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Para obtener la sumatoria de los valores num\u00e9ricos de un arreglo.<\/p>\n<pre class=\"lang:php decode:true \" title=\"Modificaciones sin recorrer un array\">$numeros = [1, 2, 3, 4, 5];\n\n\/\/ Imprime 15\narray_sum($numeros);<\/pre>\n<h3><span class=\"ez-toc-section\" id=\"array_product\"><\/span>array_product<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Se obtiene el producto de los valores num\u00e9ricos de un arreglo.<\/p>\n<pre class=\"lang:php decode:true \" title=\"Modificaciones sin recorrer un array\">$numeros = [1, 2, 3, 4, 5];\n\n\/\/ Imprime 120\narray_product($numeros);<\/pre>\n<h3><span class=\"ez-toc-section\" id=\"array_map\"><\/span>array_map<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Permite obtener un nuevo arreglo a partir de una transformaci\u00f3n del arreglo original.<\/p>\n<pre class=\"lang:php decode:true \" title=\"Modificaciones sin recorrer un array\">function cubo($numero) {\n    return pow($numero, 3);\n}\n\n$numeros = [1, 2, 3, 4, 5];\n\n\/\/ Obtener el cubo de cada elemento del arreglo\n$cubos = array_map('cubo', $numeros);\n\nprint_r($cubos);<\/pre>\n<p>Otra forma alternativa es utilizando funciones an\u00f3nimas.<\/p>\n<pre class=\"lang:php decode:true \" title=\"Modificaciones sin recorrer un array\">$numeros = [1, 2, 3, 4, 5];\n\n\/\/ Obtener el cubo de cada elemento del arreglo\n$cubos = array_map(\n    function ($numero) { \n        return pow($numero, 3); \n    }, $numeros\n);\n\nprint_r($cubos);<\/pre>\n<h3><span class=\"ez-toc-section\" id=\"array_filter\"><\/span>array_filter<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Se obtiene un array a partir de una funci\u00f3n que permite el filtrado de cada elemento del array original.<\/p>\n<pre class=\"lang:php decode:true \" title=\"Modificaciones sin recorrer un array\">function esPar($numero)\n{\n    return ($numero % 2 == 0);\n}\n\n$numeros = [1, 2, 3, 4, 5];\n\n\/\/ Llamado a una funci\u00f3n que filtra elementos de un array \n$pares = array_filter($numeros, 'esPar');\n\nprint_r($pares);<\/pre>\n<h3><span class=\"ez-toc-section\" id=\"array_reduce\"><\/span>array_reduce<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Permite obtener un valor escalar resultante de una funci\u00f3n previa. Esta funci\u00f3n debe establecerse de la siguiente manera:<\/p>\n<pre>function callback($carry, $item) { ... }<\/pre>\n<p>En este caso el primer argumento ($carry)\u00a0de la funci\u00f3n es un acumulador, mientras que el segundo ($item) es el valor del elemento en cada iteraci\u00f3n.<\/p>\n<pre class=\"lang:php decode:true \" title=\"Modificaciones sin recorrer un array\">$numeros = [1, 2, 3, 4, 5];\n\n$sumatoriaPares = array_reduce($numeros, \n    function($total, $item) { \n        if ($item % 2 == 0)\n            $total += $item; \n        return $total; \n    }\n);\n\nvar_dump($sumatoriaPares);<\/pre>\n<h2><span class=\"ez-toc-section\" id=\"Otras_funciones\"><\/span>Otras funciones<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>https:\/\/gist.github.com\/senquevila\/b972f476479f4e14dc08e9f8c8cdc6e8<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Documentacion\"><\/span>Documentaci\u00f3n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><a href=\"http:\/\/php.net\/manual\/es\/language.types.array.php\">Arreglos en PHP<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Creaci\u00f3n de un Array Un array puede ser creado con el constructor del lenguaje array(). \u00c9ste toma cualquier n\u00famero de parejas clave =&gt; valor como argumentos. array( clave1 =&gt; valor1, clave2 =&gt; valor2, clave3 =&gt; valor3, &#8230; ); Tambi\u00e9n, a partir de PHP 5.4, es posible realizar la siguiente notaci\u00f3n: [ clave1 =&gt; valor1, clave2 [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[46],"tags":[54],"class_list":["post-764","post","type-post","status-publish","format-standard","hentry","category-php","tag-array"],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/iscodigo.com\/blog\/wp-json\/wp\/v2\/posts\/764","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/iscodigo.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/iscodigo.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/iscodigo.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/iscodigo.com\/blog\/wp-json\/wp\/v2\/comments?post=764"}],"version-history":[{"count":0,"href":"https:\/\/iscodigo.com\/blog\/wp-json\/wp\/v2\/posts\/764\/revisions"}],"wp:attachment":[{"href":"https:\/\/iscodigo.com\/blog\/wp-json\/wp\/v2\/media?parent=764"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/iscodigo.com\/blog\/wp-json\/wp\/v2\/categories?post=764"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/iscodigo.com\/blog\/wp-json\/wp\/v2\/tags?post=764"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}