<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<refentry xml:id="function.array" xmlns="http://docbook.org/ns/docbook">
 <refnamediv>
  <refname>array</refname>
  <refpurpose>Create an array</refpurpose>
 </refnamediv>
 <refsect1 role="description">
  &reftitle.description;
  <methodsynopsis>
   <type>array</type><methodname>array</methodname>
   <methodparam rep="repeat"><type>mixed</type><parameter>values</parameter></methodparam>
  </methodsynopsis>
  <para>
   Creates an array. Read the section on the
   <link linkend="language.types.array">array type</link> for more information
   on what an array is.
  </para>
 </refsect1>
 <refsect1 role="parameters">
  &reftitle.parameters;
  <para>
   <variablelist>
    <varlistentry>
     <term><parameter>values</parameter></term>
     <listitem>
      <para>
       Syntax "index =&gt; values", separated by commas, define index
       and values. index may be of type string or integer. When index is
       omitted, an integer index is automatically generated, starting
       at 0. If index is an integer, next generated index will
       be the biggest integer index + 1. Note that when two identical
       indices are defined, the last overwrites the first.
      </para>
      <para>
       Having a trailing comma after the last defined array entry, while
       unusual, is a valid syntax.
      </para>
     </listitem>
    </varlistentry>
   </variablelist>
  </para>
 </refsect1>
 <refsect1 role="returnvalues">
  &reftitle.returnvalues;
  <para>
   Returns an array of the parameters.  The parameters can be given
   an index with the <literal>=&gt;</literal> operator.  Read the section
   on the <link linkend="language.types.array">array type</link> for more
   information on what an array is.
  </para>
 </refsect1>
 <refsect1 role="examples">
  &reftitle.examples;
  <para>
   The following example demonstrates how to create a
   two-dimensional array, how to specify keys for associative
   arrays, and how to skip-and-continue numeric indices in normal
   arrays.
   <example>
    <title><function>array</function> example</title>
    <programlisting role="php">
<![CDATA[
<?php
$fruits = array (
    "fruits"  => array("a" => "orange", "b" => "banana", "c" => "apple"),
    "numbers" => array(1, 2, 3, 4, 5, 6),
    "holes"   => array("first", 5 => "second", "third")
);
?>
]]>
    </programlisting>
   </example>
  </para>
  <para>
   <example>
    <title>Automatic index with <function>array</function></title>
    <programlisting role="php">
<![CDATA[
<?php
$array = array(1, 1, 1, 1,  1, 8 => 1,  4 => 1, 19, 3 => 13);
print_r($array);
?>
]]>
    </programlisting>
    &example.outputs;
    <screen role="php">
<![CDATA[
Array
(
    [0] => 1
    [1] => 1
    [2] => 1
    [3] => 13
    [4] => 1
    [8] => 1
    [9] => 19
)
]]>
    </screen>
   </example>
  </para>
  <para>
   Note that index '3' is defined twice, and keep its final value of 13.
   Index 4 is defined after index 8, and next generated index (value 19)
   is 9, since biggest index was 8.
  </para>
  <para>
   This example creates a 1-based array.
   <example>
    <title>1-based index with <function>array</function></title>
    <programlisting role="php">
<![CDATA[
<?php
$firstquarter = array(1 => 'January', 'February', 'March');
print_r($firstquarter);
?>
]]>
    </programlisting>
    &example.outputs;
    <screen>
<![CDATA[
Array
(
    [1] => January
    [2] => February
    [3] => March
)
]]>
    </screen>
   </example>
  </para>
  <para>
   As in Perl, you can access a value from the array inside double quotes.
   However, with PHP you'll need to enclose your array between curly braces.
   <example>
    <title>Accessing an array inside double quotes</title>
    <programlisting role="php">
<![CDATA[
<?php

$foo = array('bar' => 'baz');
echo "Hello {$foo['bar']}!"; // Hello baz!

?>
]]>
    </programlisting>
   </example>
  </para>
 </refsect1>
 <refsect1 role="notes">
  &reftitle.notes;
  <para>
   <note>
    <para>
     <function>array</function> is a language construct used to
     represent literal arrays, and not a regular function.
    </para>
   </note>
  </para>
 </refsect1>
 <refsect1 role="seealso">
  &reftitle.seealso;
  <para>
   <simplelist>
    <member><function>array_pad</function></member>
    <member><function>list</function></member>
    <member><function>count</function></member>
    <member><function>range</function></member>
    <member>&foreach;</member>
    <member>The <link linkend="language.types.array">array</link> type</member>
   </simplelist>
  </para>
 </refsect1>
</refentry>

<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->
