<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<refentry xml:id="mysqli-result.fetch-array" xmlns="http://docbook.org/ns/docbook">
 <refnamediv>
  <refname>mysqli_result::fetch_array</refname>
  <refname>mysqli_fetch_array</refname>
  <refpurpose>Fetch the next row of a result set as an associative, a numeric array, or both</refpurpose>
 </refnamediv>

 <refsect1 role="description">
  &reftitle.description;
  <para>&style.oop;</para>
  <methodsynopsis role="mysqli_result">
   <modifier>public</modifier> <type class="union"><type>array</type><type>null</type><type>false</type></type><methodname>mysqli_result::fetch_array</methodname>
   <methodparam choice="opt"><type>int</type><parameter>mode</parameter><initializer><constant>MYSQLI_BOTH</constant></initializer></methodparam>
  </methodsynopsis>
  <para>&style.procedural;</para>
  <methodsynopsis>
   <type class="union"><type>array</type><type>null</type><type>false</type></type><methodname>mysqli_fetch_array</methodname>
   <methodparam><type>mysqli_result</type><parameter>result</parameter></methodparam>
   <methodparam choice="opt"><type>int</type><parameter>mode</parameter><initializer><constant>MYSQLI_BOTH</constant></initializer></methodparam>
  </methodsynopsis>
  <para>
   Fetches one row of data from the result set and returns it as an array.
   Each subsequent call to this function will return the next row within the
   result set, or &null; if there are no more rows.
  </para>
  <para>
   In addition to storing the data in the numeric indices of the result array, 
   this function can also store the data in associative indices 
   by using the field names of the result set as keys.
  </para>
  <para>
   If two or more columns of the result have the same name, the last
   column will take precedence and overwrite any previous data. To
   access multiple columns with the same name, the numerically indexed
   version of the row must be used.
  </para>
  &database.field-case;
  &database.fetch-null;
 </refsect1>

 <refsect1 role="parameters">
  &reftitle.parameters;
  <para>
   <variablelist>
    &mysqli.result.description;
    <varlistentry>
     <term><parameter>mode</parameter></term>
     <listitem>
      <para>
       This optional parameter is a constant indicating what type of array
       should be produced from the current row data. The possible values for
       this parameter are the constants <constant>MYSQLI_ASSOC</constant>,
       <constant>MYSQLI_NUM</constant>, or <constant>MYSQLI_BOTH</constant>.
      </para>
      <para>
       By using the <constant>MYSQLI_ASSOC</constant> constant this function
       will behave identically to the <function>mysqli_fetch_assoc</function>,
       while <constant>MYSQLI_NUM</constant> will behave identically to the
       <function>mysqli_fetch_row</function> function. The final option 
       <constant>MYSQLI_BOTH</constant> will create a single array with the
       attributes of both.
      </para>
     </listitem>
    </varlistentry>
   </variablelist>
  </para>
 </refsect1>

 <refsect1 role="returnvalues">
  &reftitle.returnvalues;
  <para>
   Returns an array representing the fetched row, &null; if there
   are no more rows in the result set, &return.falseforfailure;.
  </para>
 </refsect1>

 <refsect1 role="examples">
  &reftitle.examples;
  <example>
   <title><methodname>mysqli_result::fetch_array</methodname> example</title>
   <para>&style.oop;</para>
   <programlisting role="php">
<![CDATA[
<?php

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

$query = "SELECT Name, CountryCode FROM City ORDER BY ID LIMIT 3";
$result = $mysqli->query($query);

/* numeric array */
$row = $result->fetch_array(MYSQLI_NUM);
printf("%s (%s)\n", $row[0], $row[1]);

/* associative array */
$row = $result->fetch_array(MYSQLI_ASSOC);
printf("%s (%s)\n", $row["Name"], $row["CountryCode"]);

/* associative and numeric array */
$row = $result->fetch_array(MYSQLI_BOTH);
printf("%s (%s)\n", $row[0], $row["CountryCode"]);
]]>
   </programlisting>
   <para>&style.procedural;</para>
   <programlisting role="php">
<![CDATA[
<?php

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = mysqli_connect("localhost", "my_user", "my_password", "world");

$query = "SELECT Name, CountryCode FROM City ORDER by ID LIMIT 3";
$result = mysqli_query($mysqli, $query);

/* numeric array */
$row = mysqli_fetch_array($result, MYSQLI_NUM);
printf("%s (%s)\n", $row[0], $row[1]);

/* associative array */
$row = mysqli_fetch_array($result, MYSQLI_ASSOC);
printf("%s (%s)\n", $row["Name"], $row["CountryCode"]);

/* associative and numeric array */
$row = mysqli_fetch_array($result, MYSQLI_BOTH);
printf("%s (%s)\n", $row[0], $row["CountryCode"]);
]]>
   </programlisting>
   &examples.outputs.similar;
   <screen>
<![CDATA[
Kabul (AFG)
Qandahar (AFG)
Herat (AFG)
]]>
   </screen>
  </example>
 </refsect1>

 <refsect1 role="seealso">
  &reftitle.seealso;
  <para>
   <simplelist>
    <member><function>mysqli_fetch_assoc</function></member>
    <member><function>mysqli_fetch_column</function></member>
    <member><function>mysqli_fetch_row</function></member>
    <member><function>mysqli_fetch_object</function></member>
    <member><function>mysqli_query</function></member>
    <member><function>mysqli_data_seek</function></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
-->
