<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/ref.array.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'es',
  ),
  'this' => 
  array (
    0 => 'function.array-column.php',
    1 => 'array_column',
    2 => 'Devuelve los valores de una columna de un array de entrada',
  ),
  'up' => 
  array (
    0 => 'ref.array.php',
    1 => 'Funciones de Arrays',
  ),
  'prev' => 
  array (
    0 => 'function.array-chunk.php',
    1 => 'array_chunk',
  ),
  'next' => 
  array (
    0 => 'function.array-combine.php',
    1 => 'array_combine',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'es',
    'path' => 'reference/array/functions/array-column.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="function.array-column" class="refentry">
 <div class="refnamediv">
  <h1 class="refname">array_column</h1>
  <p class="verinfo">(PHP 5 &gt;= 5.5.0, PHP 7, PHP 8)</p><p class="refpurpose"><span class="refname">array_column</span> &mdash; <span class="dc-title">Devuelve los valores de una columna de un array de entrada</span></p>

 </div>
 <div class="refsect1 description" id="refsect1-function.array-column-description">
  <h3 class="title">Descripción</h3>
  <div class="methodsynopsis dc-description">
   <span class="modifier">function</span> <span class="methodname"><strong>array_column</strong></span>(<span class="methodparam"><span class="type"><a href="language.types.array.php" class="type array">array</a></span> <code class="parameter">$array</code></span>, <span class="methodparam"><span class="type"><span class="type"><a href="language.types.integer.php" class="type int">int</a></span>|<span class="type"><a href="language.types.string.php" class="type string">string</a></span>|<span class="type"><a href="language.types.null.php" class="type null">null</a></span></span> <code class="parameter">$column_key</code></span>, <span class="methodparam"><span class="type"><span class="type"><a href="language.types.integer.php" class="type int">int</a></span>|<span class="type"><a href="language.types.string.php" class="type string">string</a></span>|<span class="type"><a href="language.types.null.php" class="type null">null</a></span></span> <code class="parameter">$index_key</code><span class="initializer"> = <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong></span></span>): <span class="type"><a href="language.types.array.php" class="type array">array</a></span></div>

  <p class="para rdfs-comment">
   <span class="function"><strong>array_column()</strong></span> devuelve los valores de una columna de <code class="parameter">array</code>, identificada por la clave
   <code class="parameter">column_key</code>. Opcionalmente, se puede proporcionar
   un argumento <code class="parameter">index_key</code> para indexar los valores
   en el array devuelto por los valores de la columna
   <code class="parameter">index_key</code> del array de entrada.
  </p>
  <p class="simpara">
   <code class="parameter">array</code> se trata como una lista de filas, cada una de las cuales es
   a su vez un array o un objeto; una columna es la entrada o propiedad que
   <code class="parameter">column_key</code> nombra en cada fila.
   Las filas que no son ni un array ni un objeto, y las filas en las que dicha entrada
   o propiedad está ausente, se omiten sin diagnóstico.
   Las claves de <code class="parameter">array</code> nunca se conservan.
  </p>
 </div>

 <div class="refsect1 parameters" id="refsect1-function.array-column-parameters">
  <h3 class="title">Parámetros</h3>
  <p class="para">
   <dl>
    
     <dt><code class="parameter">array</code></dt>
     <dd>
      <p class="simpara">
       Una lista cuyas filas son arrays u objetos, a partir de la cual se extrae
       una columna de valores. Si una fila es un objeto, las propiedades públicas
       se leen directamente. Para que una propiedad no accesible públicamente sea leída,
       la clase debe implementar tanto los métodos mágicos
       <a href="language.oop5.overloading.php#object.get" class="link">__get()</a> como
       <a href="language.oop5.overloading.php#object.isset" class="link">__isset()</a>: sin
       <a href="language.oop5.overloading.php#object.isset" class="link">__isset()</a> la fila se omite, y con
       <a href="language.oop5.overloading.php#object.isset" class="link">__isset()</a> pero sin
       <a href="language.oop5.overloading.php#object.get" class="link">__get()</a> se lanza un
       <span class="exceptionname"><a href="class.error.php" class="exceptionname">Error</a></span>.
      </p>
     </dd>
    
    
     <dt><code class="parameter">column_key</code></dt>
     <dd>
      <p class="simpara">
       La columna de valores a devolver. Este valor puede ser la clave
       entera de la columna a recuperar, o bien el
       nombre de la clave para un array asociativo o el nombre de la propiedad.
       También puede valer <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong> para devolver las filas completas
       (esto puede ser útil en conjunción con el argumento
       <code class="parameter">index_key</code> para reindexar el array).
      </p>
     </dd>
    
    
     <dt><code class="parameter">index_key</code></dt>
     <dd>
      <p class="para">
       La columna a utilizar como índice/clave para el array devuelto.
       Este valor puede ser la clave entera de la columna, o el nombre de la clave.
       El valor es <a href="language.types.array.php#language.types.array.key-casts" class="link">cast</a>
       como de costumbre para las claves del array (sin embargo, anterior a PHP 8.0.0,
       los objetos que soportan una conversión en string también eran permitidos).
      </p>
     </dd>
    
   </dl>
  </p>
 </div>

 <div class="refsect1 returnvalues" id="refsect1-function.array-column-returnvalues">
  <h3 class="title">Valores devueltos</h3>
  <p class="simpara">
   Devuelve un array de valores que representan una sola columna desde el
   array de entrada. Si <code class="parameter">column_key</code> es <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong>, se devuelven
   las propias filas.
  </p>
 </div>

 <div class="refsect1 changelog" id="refsect1-function.array-column-changelog">
  <h3 class="title">Historial de cambios</h3>
  <p class="para">
   <table class="doctable informaltable">
    
     <thead>
      <tr>
       <th>Versión</th>
       <th>Descripción</th>
      </tr>

     </thead>

     <tbody class="tbody">
      <tr>
       <td>8.0.0</td>
       <td>
        Los objetos en las columnas indicadas por el argumento <code class="parameter">index_key</code>
        ya no se convertirán en string y lanzarán ahora
        una <span class="classname"><a href="class.typeerror.php" class="classname">TypeError</a></span> en su lugar.
       </td>
      </tr>

      <tr>
       <td>7.1.0</td>
       <td>
        Ahora se respeta la visibilidad de las propiedades. Anteriormente, las propiedades
        protegidas y privadas se leían directamente.
       </td>
      </tr>

      <tr>
       <td>7.0.0</td>
       <td>
        Las filas de <code class="parameter">array</code> ahora también pueden ser objetos,
        además de arrays.
       </td>
      </tr>

     </tbody>
    
   </table>

  </p>
 </div>

 <div class="refsect1 examples" id="refsect1-function.array-column-examples">
  <h3 class="title">Ejemplos</h3>
  <p class="para">
   <div class="example" id="example-1">
    <p><strong>Ejemplo #1 Recupera la columna de los nombres</strong></p>
    <div class="example-contents">
<div class="annotation-interactive phpcode"><pre><code style="color: #000000"><span style="color: #0000BB">&lt;?php

</span><span style="color: #FF8000">// Array que representa un conjunto de registros de una base de datos
</span><span style="color: #0000BB">$records </span><span style="color: #007700">= [
    [
        </span><span style="color: #DD0000">'id' </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">2135</span><span style="color: #007700">,
        </span><span style="color: #DD0000">'first_name' </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">'John'</span><span style="color: #007700">,
        </span><span style="color: #DD0000">'last_name' </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">'Doe'</span><span style="color: #007700">,
    ],
    [
        </span><span style="color: #DD0000">'id' </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">3245</span><span style="color: #007700">,
        </span><span style="color: #DD0000">'first_name' </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">'Sally'</span><span style="color: #007700">,
        </span><span style="color: #DD0000">'last_name' </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">'Smith'</span><span style="color: #007700">,
    ],
    [
        </span><span style="color: #DD0000">'id' </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">5342</span><span style="color: #007700">,
        </span><span style="color: #DD0000">'first_name' </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">'Jane'</span><span style="color: #007700">,
        </span><span style="color: #DD0000">'last_name' </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">'Jones'</span><span style="color: #007700">,
    ],
    [
        </span><span style="color: #DD0000">'id' </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">5623</span><span style="color: #007700">,
        </span><span style="color: #DD0000">'first_name' </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">'Peter'</span><span style="color: #007700">,
        </span><span style="color: #DD0000">'last_name' </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">'Doe'</span><span style="color: #007700">,
    ]
];

</span><span style="color: #0000BB">$first_names </span><span style="color: #007700">= </span><span style="color: #0000BB">array_column</span><span style="color: #007700">(</span><span style="color: #0000BB">$records</span><span style="color: #007700">, </span><span style="color: #DD0000">'first_name'</span><span style="color: #007700">);
</span><span style="color: #0000BB">print_r</span><span style="color: #007700">(</span><span style="color: #0000BB">$first_names</span><span style="color: #007700">);

</span><span style="color: #0000BB">?&gt;</span></code></pre></div>
    </div>

    <div class="example-contents"><p>El ejemplo anterior mostrará:</p></div>
    <div class="example-contents screen">
<div class="annotation-interactive examplescode"><pre class="examplescode">Array
(
    [0] =&gt; John
    [1] =&gt; Sally
    [2] =&gt; Jane
    [3] =&gt; Peter
)</pre>
</div>
    </div>
   </div>
  </p>
  <p class="para">
   <div class="example" id="example-2">
    <p><strong>Ejemplo #2 
     Recupera la columna de los apellidos, indexada por la columna &quot;id&quot;
    </strong></p>
    <div class="example-contents">
<div class="annotation-interactive phpcode"><pre><code style="color: #000000"><span style="color: #0000BB">&lt;?php

</span><span style="color: #FF8000">// Utilizando el array del ejemplo #1
</span><span style="color: #0000BB">$records </span><span style="color: #007700">= [
    [
        </span><span style="color: #DD0000">'id' </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">2135</span><span style="color: #007700">,
        </span><span style="color: #DD0000">'first_name' </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">'John'</span><span style="color: #007700">,
        </span><span style="color: #DD0000">'last_name' </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">'Doe'</span><span style="color: #007700">,
    ],
    [
        </span><span style="color: #DD0000">'id' </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">3245</span><span style="color: #007700">,
        </span><span style="color: #DD0000">'first_name' </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">'Sally'</span><span style="color: #007700">,
        </span><span style="color: #DD0000">'last_name' </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">'Smith'</span><span style="color: #007700">,
    ],
    [
        </span><span style="color: #DD0000">'id' </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">5342</span><span style="color: #007700">,
        </span><span style="color: #DD0000">'first_name' </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">'Jane'</span><span style="color: #007700">,
        </span><span style="color: #DD0000">'last_name' </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">'Jones'</span><span style="color: #007700">,
    ],
    [
        </span><span style="color: #DD0000">'id' </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">5623</span><span style="color: #007700">,
        </span><span style="color: #DD0000">'first_name' </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">'Peter'</span><span style="color: #007700">,
        </span><span style="color: #DD0000">'last_name' </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">'Doe'</span><span style="color: #007700">,
    ]
];

</span><span style="color: #0000BB">$last_names </span><span style="color: #007700">= </span><span style="color: #0000BB">array_column</span><span style="color: #007700">(</span><span style="color: #0000BB">$records</span><span style="color: #007700">, </span><span style="color: #DD0000">'last_name'</span><span style="color: #007700">, </span><span style="color: #DD0000">'id'</span><span style="color: #007700">);
</span><span style="color: #0000BB">print_r</span><span style="color: #007700">(</span><span style="color: #0000BB">$last_names</span><span style="color: #007700">);

</span><span style="color: #0000BB">?&gt;</span></code></pre></div>
    </div>

    <div class="example-contents"><p>El ejemplo anterior mostrará:</p></div>
    <div class="example-contents screen">
<div class="annotation-interactive examplescode"><pre class="examplescode">Array
(
    [2135] =&gt; Doe
    [3245] =&gt; Smith
    [5342] =&gt; Jones
    [5623] =&gt; Doe
)</pre>
</div>
    </div>
   </div>
  </p>
    <p class="para">
   <div class="example" id="example-3">
    <p><strong>Ejemplo #3 
     Recupera la columna de los nombres de usuario desde la propiedad pública
     &quot;username&quot; de un objeto
    </strong></p>
    <div class="example-contents">
<div class="annotation-interactive phpcode"><pre><code style="color: #000000"><span style="color: #0000BB">&lt;?php

</span><span style="color: #007700">class </span><span style="color: #0000BB">User
</span><span style="color: #007700">{
    public </span><span style="color: #0000BB">$username</span><span style="color: #007700">;

    public function </span><span style="color: #0000BB">__construct</span><span style="color: #007700">(</span><span style="color: #0000BB">string $username</span><span style="color: #007700">)
    {
        </span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">username </span><span style="color: #007700">= </span><span style="color: #0000BB">$username</span><span style="color: #007700">;
    }
}

</span><span style="color: #0000BB">$users </span><span style="color: #007700">= [
    new </span><span style="color: #0000BB">User</span><span style="color: #007700">(</span><span style="color: #DD0000">'user 1'</span><span style="color: #007700">),
    new </span><span style="color: #0000BB">User</span><span style="color: #007700">(</span><span style="color: #DD0000">'user 2'</span><span style="color: #007700">),
    new </span><span style="color: #0000BB">User</span><span style="color: #007700">(</span><span style="color: #DD0000">'user 3'</span><span style="color: #007700">),
];

</span><span style="color: #0000BB">print_r</span><span style="color: #007700">(</span><span style="color: #0000BB">array_column</span><span style="color: #007700">(</span><span style="color: #0000BB">$users</span><span style="color: #007700">, </span><span style="color: #DD0000">'username'</span><span style="color: #007700">));

</span><span style="color: #0000BB">?&gt;</span></code></pre></div>
    </div>

    <div class="example-contents"><p>El ejemplo anterior mostrará:</p></div>
    <div class="example-contents screen">
<div class="annotation-interactive examplescode"><pre class="examplescode">Array
(
    [0] =&gt; user 1
    [1] =&gt; user 2
    [2] =&gt; user 3
)</pre>
</div>
    </div>
   </div>
  </p>
  <p class="para">
   <div class="example" id="example-4">
    <p><strong>Ejemplo #4 
     Recupera la columna de nombres desde la propiedad privada &quot;name&quot; de un
     objeto utilizando los métodos mágicos <a href="language.oop5.overloading.php#object.isset" class="link">__isset()</a>
     y <a href="language.oop5.overloading.php#object.get" class="link">__get()</a>
    </strong></p>
    <div class="example-contents">
<div class="annotation-interactive phpcode"><pre><code style="color: #000000"><span style="color: #0000BB">&lt;?php

</span><span style="color: #007700">class </span><span style="color: #0000BB">Person
</span><span style="color: #007700">{
    private </span><span style="color: #0000BB">$name</span><span style="color: #007700">;

    public function </span><span style="color: #0000BB">__construct</span><span style="color: #007700">(</span><span style="color: #0000BB">string $name</span><span style="color: #007700">)
    {
        </span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">name </span><span style="color: #007700">= </span><span style="color: #0000BB">$name</span><span style="color: #007700">;
    }

    public function </span><span style="color: #0000BB">__get</span><span style="color: #007700">(</span><span style="color: #0000BB">$prop</span><span style="color: #007700">)
    {
        return </span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">$prop</span><span style="color: #007700">;
    }

    public function </span><span style="color: #0000BB">__isset</span><span style="color: #007700">(</span><span style="color: #0000BB">$prop</span><span style="color: #007700">) : </span><span style="color: #0000BB">bool
    </span><span style="color: #007700">{
        return isset(</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">$prop</span><span style="color: #007700">);
    }
}

</span><span style="color: #0000BB">$people </span><span style="color: #007700">= [
    new </span><span style="color: #0000BB">Person</span><span style="color: #007700">(</span><span style="color: #DD0000">'Fred'</span><span style="color: #007700">),
    new </span><span style="color: #0000BB">Person</span><span style="color: #007700">(</span><span style="color: #DD0000">'Jane'</span><span style="color: #007700">),
    new </span><span style="color: #0000BB">Person</span><span style="color: #007700">(</span><span style="color: #DD0000">'John'</span><span style="color: #007700">),
];

</span><span style="color: #0000BB">print_r</span><span style="color: #007700">(</span><span style="color: #0000BB">array_column</span><span style="color: #007700">(</span><span style="color: #0000BB">$people</span><span style="color: #007700">, </span><span style="color: #DD0000">'name'</span><span style="color: #007700">));
</span><span style="color: #0000BB">?&gt;</span></code></pre></div>
    </div>

    <div class="example-contents"><p>El ejemplo anterior mostrará:</p></div>
    <div class="example-contents screen">
<div class="annotation-interactive examplescode"><pre class="examplescode">Array
(
    [0] =&gt; Fred
    [1] =&gt; Jane
    [2] =&gt; John
)</pre>
</div>
    </div>
   </div>
   Si <a href="language.oop5.overloading.php#object.isset" class="link">__isset()</a> no está definido, el objeto
   no contribuye con ninguna entrada al array devuelto.
  </p>
 </div>


</div><?php manual_footer($setup); ?>