aidan           Sun Oct  3 07:06:40 2004 EDT

  Modified files:              
    /phpdoc/en/reference/array/functions        array-multisort.xml 
  Log:
  Intergrated the user notes into examples
  
http://cvs.php.net/diff.php/phpdoc/en/reference/array/functions/array-multisort.xml?r1=1.11&r2=1.12&ty=u
Index: phpdoc/en/reference/array/functions/array-multisort.xml
diff -u phpdoc/en/reference/array/functions/array-multisort.xml:1.11 
phpdoc/en/reference/array/functions/array-multisort.xml:1.12
--- phpdoc/en/reference/array/functions/array-multisort.xml:1.11        Tue Aug  3 
06:24:05 2004
+++ phpdoc/en/reference/array/functions/array-multisort.xml     Sun Oct  3 07:06:39 
2004
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!-- $Revision: 1.11 $ -->
+<!-- $Revision: 1.12 $ -->
 <!-- splitted from ./en/functions/array.xml, last change in rev 1.11 -->
   <refentry id="function.array-multisort">
    <refnamediv>
@@ -8,17 +8,20 @@
    </refnamediv>
    <refsect1>
     <title>Description</title>
-     <methodsynopsis>
-      <type>bool</type><methodname>array_multisort</methodname>
-      <methodparam><type>array</type><parameter>ar1</parameter></methodparam>
-      <methodparam 
choice="opt"><type>mixed</type><parameter>arg</parameter></methodparam>
-      <methodparam 
choice="opt"><type>mixed</type><parameter>...</parameter></methodparam>
-      <methodparam 
choice="opt"><type>array</type><parameter>...</parameter></methodparam>
-      <!-- Parameters don't need to be passed by reference -->
-     </methodsynopsis>
+    <methodsynopsis>
+     <type>bool</type><methodname>array_multisort</methodname>
+     <methodparam><type>array</type><parameter>ar1</parameter></methodparam>
+     <methodparam 
choice="opt"><type>mixed</type><parameter>arg</parameter></methodparam>
+     <methodparam 
choice="opt"><type>mixed</type><parameter>...</parameter></methodparam>
+     <methodparam 
choice="opt"><type>array</type><parameter>...</parameter></methodparam>
+     <!-- Parameters don't need to be passed by reference -->
+    </methodsynopsis> 
+    <para>
+     &return.success;
+    </para>
     <para>
      <function>array_multisort</function> can be used to sort several
-     arrays at once or a multi-dimensional array according by one of
+     arrays at once or a multi-dimensional array according to one of
      more dimensions. Associative (string) keys are maintained while
      numerical keys are re-indexed.
     </para>
@@ -31,18 +34,18 @@
     </para>
     <para>
      The argument structure of this function is a bit unusual, but
-     flexible. The very first argument has to be an
-     array. Subsequently, each argument can be either an array or a
-     sorting flag from the following lists.
+     flexible. The first argument has to be an array. Subsequently,
+     each argument can be either an array or a sorting flag from the
+     following lists.
     </para>
     <para>
      Sorting order flags:
      <itemizedlist>
       <listitem>
-       <simpara><constant>SORT_ASC</constant> - sort in ascending order</simpara>
+       <simpara><constant>SORT_ASC</constant> - Sort in ascending order</simpara>
       </listitem>
       <listitem>
-       <simpara><constant>SORT_DESC</constant> - sort in descending order</simpara>
+       <simpara><constant>SORT_DESC</constant> - Sort in descending order</simpara>
       </listitem>
      </itemizedlist>
     </para>
@@ -50,13 +53,13 @@
      Sorting type flags:
      <itemizedlist>
       <listitem>
-       <simpara><constant>SORT_REGULAR</constant> - compare items normally</simpara>
+       <simpara><constant>SORT_REGULAR</constant> - Compare items normally</simpara>
       </listitem>
       <listitem>
-       <simpara><constant>SORT_NUMERIC</constant> - compare items 
numerically</simpara>
+       <simpara><constant>SORT_NUMERIC</constant> - Compare items 
numerically</simpara>
       </listitem>
       <listitem>
-       <simpara><constant>SORT_STRING</constant> - compare items as strings</simpara>
+       <simpara><constant>SORT_STRING</constant> - Compare items as strings</simpara>
       </listitem>
      </itemizedlist>
     </para>
@@ -66,9 +69,7 @@
      only to that array - they are reset to default <constant>SORT_ASC</constant> and
      <constant>SORT_REGULAR</constant> before each new array argument.
     </para>
-    <para>
-     &return.success;
-    </para>
+
     <para>
      <example>
       <title>Sorting multiple arrays</title>
@@ -78,17 +79,37 @@
 $ar1 = array("10", 100, 100, "a");
 $ar2 = array(1, 3, "2", 1);
 array_multisort($ar1, $ar2);
+
+var_dump($ar1);
+var_dump($ar2);
 ?>
 ]]>
       </programlisting>
+      <para>
+       In this example, after sorting, the first array will contain "10",
+       "a", 100, 100. The second array will contain 1, 1, "2", 3. The
+       entries in the second array corresponding to the identical
+       entries in the first array (100 and 100) were sorted as well.
+      </para>
+      <screen>
+<![CDATA[
+array(4) {
+  [0]=> string(2) "10"
+  [1]=> string(1) "a"
+  [2]=> int(100)
+  [3]=> int(100)
+}
+array(4) {
+  [0]=> int(1)
+  [1]=> int(1)
+  [2]=> string(1) "2"
+  [3]=> int(3)
+}
+]]>     
+      </screen>
      </example>
     </para>
-    <para>
-     In this example, after sorting, the first array will contain 10,
-     "a", 100, 100. The second array will contain 1, 1, "2", 3. The
-     entries in the second array corresponding to the identical
-     entries in the first array (100 and 100) were sorted as well.
-    </para>
+
     <para>
      <example>
       <title>Sorting multi-dimensional array</title>
@@ -101,14 +122,151 @@
 ?>
 ]]>
       </programlisting>
+      <para>
+       In this example, after sorting, the first array will contain "10",
+       100, 100, "a" (it was sorted as strings in ascending order). The
+       second will contain 1, 3, "2", 1 (sorted as numbers, in
+       descending order).
+      </para>
+      <screen>
+<![CDATA[
+array(2) {
+  [0]=> array(4) {
+    [0]=> string(2) "10"
+    [1]=> int(100)
+    [2]=> int(100)
+    [3]=> string(1) "a"
+  }
+  [1]=> array(4) {
+    [0]=> int(1)
+    [1]=> int(3)
+    [2]=> string(1) "2"
+    [3]=> int(1)
+  }
+}
+]]>
+      </screen>
      </example>
     </para>
+
     <para>
-     In this example, after sorting, the first array will contain 10,
-     100, 100, "a" (it was sorted as strings in ascending order), and
-     the second one will contain 1, 3, "2", 1 (sorted as numbers, in
-     descending order).
+     <example>
+      <title>Sorting database results</title>
+      <para>
+       For this example, each element in the <varname>data</varname>
+       array represents one row in a table. This type of dataset is typical
+       of database records.
+      </para>
+      <para>
+       Example data:
+      </para>
+      <screen>
+<![CDATA[
+volume | edition
+-------+--------
+    67 |       2
+    86 |       1
+    85 |       6
+    98 |       2
+    86 |       6
+    67 |       7
+]]>
+      </screen>
+      <para>
+       The data as an array, called <varname>data</varname>. This would usually,
+       for example, be obtained by looping with 
<function>mysql_fetch_assoc</function>.
+      </para>
+      <programlisting role="php">
+<![CDATA[
+<?php
+$data[] = array('volume' => 67, 'edition' => 2);
+$data[] = array('volume' => 86, 'edition' => 1);
+$data[] = array('volume' => 85, 'edition' => 6);
+$data[] = array('volume' => 98, 'edition' => 2);
+$data[] = array('volume' => 86, 'edition' => 6);
+$data[] = array('volume' => 67, 'edition' => 7);
+?>
+]]>
+      </programlisting>
+      <para>
+       In this example, we will order by <varname>volume</varname> descending,
+       <varname>edition</varname> ascending.
+      </para>
+      <para>
+       We have an array of rows, but <function>array_multisort</function>
+       requires an array of columns, so we use the the below code to obtain the
+       columns, then perform the sorting.
+      </para>
+      <programlisting role="php">
+<![CDATA[
+<?php
+// Obtain a list of columns
+foreach ($data as $key => $row) {
+    $volume[$key]  = $row['volume'];
+    $edition[$key] = $row['edition'];
+}
+
+// Sort the data with volume descending, edition ascending
+// Add $data as the last parameter, to sort by the common key
+array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $data);
+?>
+]]>
+      </programlisting>
+      <para>
+       The dataset is now sorted, and will look like this:
+      </para>
+      <screen>
+<![CDATA[
+volume | edition
+-------+--------
+    98 |       2
+    86 |       1
+    86 |       6
+    85 |       6
+    67 |       2
+    67 |       7
+]]>
+      </screen>
+     </example>
+    </para>
+
+    <para>
+     <example>
+      <title>Case insensitive sorting</title>
+      <para>
+       Both <constant>SORT_STRING</constant> and
+       <constant>SORT_REGULAR</constant> are case sensitive, strings
+       starting with a capital letter will come before strings starting
+       with a lowercase letter.
+      </para>
+      <para>
+       To perform a case insensitve search, we can sort by an all lowercase array.
+      </para>
+      <programlisting role="php">
+<![CDATA[
+$array = array('Alpha', 'atomic', 'Beta', 'bank');
+$array_lowercase = array_map('strtolower', $array);
+
+array_multisort($array_lowercase, SORT_ASC, SORT_STRING, $array, SORT_ASC, 
SORT_STRING);
+
+print_r($array);
+]]>
+      </programlisting>
+      &example.outputs;
+      <screen>
+<![CDATA[
+Array
+(
+    [0] => Alpha
+    [1] => atomic
+    [2] => bank
+    [3] => Beta
+)
+]]>
+      </screen>
+     </example>
     </para>
+
    </refsect1>
   </refentry>
 

Reply via email to