hirokawa                Sun Dec 30 20:09:52 2001 EDT

  Modified files:              
    /phpdoc/ja/functions        array.xml 
  Log:
  translation updated.
  
Index: phpdoc/ja/functions/array.xml
diff -u phpdoc/ja/functions/array.xml:1.36 phpdoc/ja/functions/array.xml:1.37
--- phpdoc/ja/functions/array.xml:1.36  Wed Dec 12 15:52:43 2001
+++ phpdoc/ja/functions/array.xml       Sun Dec 30 20:09:52 2001
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- $Revision: 1.36 $ -->
+<!-- $Revision: 1.37 $ -->
  <reference id="ref.array">
   <title>配列関数(array)</title>
   <titleabbrev>Arrays</titleabbrev>
@@ -36,7 +36,9 @@
     <funcsynopsis>
      <funcprototype>
       <funcdef>array <function>array</function></funcdef>
-      <varargs/>
+      <paramdef>mixed 
+       <parameter><optional>...</optional></parameter>
+      </paramdef>
      </funcprototype>
     </funcsynopsis>
     <para>
@@ -65,11 +67,13 @@
      <example>
       <title><function>array</function>の例</title>
       <programlisting role="php">
+<![CDATA[
 $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>
@@ -77,13 +81,15 @@
      <example>
       <title><function>array</function> における自動インデックス</title>
       <programlisting role="php">
+<![CDATA[
 $array = array( 1, 1, 1, 1,  1, 8=>1,  4=>1, 19, 3=>13);
 print_r($array);
+]]>
       </programlisting>
-     </example>
-     この例の出力は次のようになります。
-     <informalexample>
-      <programlisting>
+      <para>
+       この例の出力は次のようになります。
+       <screen role="php">
+<![CDATA[
 Array
 (
     [0] => 1
@@ -94,8 +100,10 @@
     [8] => 1
     [9] => 19
 )
-      </programlisting>
-     </informalexample>
+]]>
+       </screen>
+      </para>
+     </example>
      インデックス '3' は二度定義されており、後の値 13 
が保持されること
      に注意して下さい。インデックス 4 はインデックス 8 
の後に定義され、
      
次に生成されるインデックス(値は19)は、最大のインデックスが 
8 であ
@@ -106,27 +114,83 @@
      <example>
       <title><function>array</function> で1から始まる配列を作成</title>
       <programlisting role="php">
-               $firstquarter  = array(1 => 'January', 'February', 'March');
-               print_r($firstquarter);
+<![CDATA[
+$firstquarter  = array(1 => 'January', 'February', 'March');
+print_r($firstquarter);
+]]>
       </programlisting>
-     </example>
-     この例の出力は次のようになります。
-     <informalexample>
-      <programlisting>
+      <para>
+       この例の出力は次のようになります。
+       <screen>
+<![CDATA[
 Array 
 (
-       [1] => 'January'
-       [2] => 'February'
-       [3] => 'March'
+    [1] => 'January'
+    [2] => 'February'
+    [3] => 'March'
 )
-      </programlisting>
-     </informalexample>
+]]>
+       </screen>
+      </para>
+     </example>
     </para>
     <para>
-     <function>list</function>も参照下さい。
+     <function>array_pad</function>, <function>list</function>, 
+     <function>range</function>も参照下さい。
     </para>
    </refsect1>
   </refentry>
+  
+  <refentry id="function.array-change-key-case">
+   <refnamediv>
+    <refname>array_change_key_case</refname>
+    <refpurpose>
+     配列のキーを全て小文字または大文字にして返す
+    </refpurpose>
+   </refnamediv>
+   <refsect1>
+    <title>説明</title>
+    <funcsynopsis>
+     <funcprototype>
+      <funcdef>array <function>array_change_key_case</function></funcdef>
+      <paramdef>array <parameter>input</parameter></paramdef>
+      <paramdef>int 
+       <parameter><optional>case</optional></parameter>
+      </paramdef>
+     </funcprototype>
+    </funcsynopsis>
+    <para>
+     <function>array_change_key_case</function> は、配列
+     
+<parameter>input</parameter>のキーを全て小文字または大文字にします。
+     
+変更は、オプションの最後のパラメータ<parameter>case</parameter>に依存
+     
+します。ここには、二つの定数<constant>CASE_UPPER</constant>および
+     <constant>CASE_LOWER</constant>を指定可能です。デフォルトは、
+     
+<constant>CASE_LOWER</constant>です。この関数は数値添字はそのままに
+     します。
+    </para>
+    <example>
+     <title><function>array_change_key_case</function>の例</title>
+     <programlisting role="php">
+<![CDATA[
+$input_array = array("FirSt" => 1, "SecOnd" => 4);
+print_r(array_change_key_case($input_array, CASE_UPPER);
+]]>
+     </programlisting>
+     <para>
+      上のプログラムの出力は以下のようになります。
+      <screen>
+<![CDATA[
+Array
+(
+    [FIRST] => 1
+    [SECOND] => 2
+)
+]]>
+      </screen>
+     </para>
+    </example>
+   </refsect1>
+  </refentry>
 
   <refentry id="function.array-chunk">
    <refnamediv>
@@ -158,18 +222,19 @@
      
可能です。&false;を指定した場合、返される各配列ではゼロから始まる
      新しい添字が使用されます。デフォルトは、&false;です。
     </para>
-    <para>
-     <example>
-      <title><function>array_chunk</function> の例</title>
-      <programlisting role="php">
+    <example>
+     <title><function>array_chunk</function> の例</title>
+     <programlisting role="php">
+<![CDATA[
 $input_array = array('a', 'b', 'c', 'd', 'e');
 print_r(array_chunk($input_array, 2));
 print_r(array_chunk($input_array, 2, TRUE));
-      </programlisting>
-     </example>     
-     上のプログラムの出力は以下のようになります。
-     <informalexample>
-      <programlisting>
+]]>
+     </programlisting>
+     <para>     
+      上のプログラムの出力は以下のようになります。
+      <screen>
+<![CDATA[
 Array
 (
     [0] => Array
@@ -210,9 +275,10 @@
         )
 
 )
-      </programlisting>
-     </informalexample>
-    </para>
+]]>
+      </screen>
+     </para>
+    </example>
    </refsect1>
   </refentry>
 
@@ -239,15 +305,12 @@
      <example>
       <title><function>array_count_values</function>の例</title>
       <programlisting role="php">
+<![CDATA[
 $array = array(1, "hello", 1, "world", "hello");
 array_count_values($array); // array(1=>2, "hello"=>2, "world"=>1)を返します
+]]>
       </programlisting>
      </example>
-     <note>
-      <para>
-       この関数は、PHP 4.0で追加されました。
-      </para>
-     </note>
     </para>
    </refsect1>
   </refentry>
@@ -265,9 +328,7 @@
       <paramdef>array <parameter>array1</parameter></paramdef>
       <paramdef>array <parameter>array2</parameter></paramdef>
       <paramdef>array
-       <parameter>
-       <replaceable><optional> ...</optional></replaceable>
-       </parameter>
+       <parameter><optional> ...</optional></parameter>
       </paramdef>
      </funcprototype>
     </funcsynopsis>
@@ -280,16 +341,33 @@
      <example>
       <title><function>array_diff</function> の例</title>
       <programlisting role="php">
+<![CDATA[
 $array1 = array ("a" => "green", "red", "blue");
 $array2 = array ("b" => "green", "yellow", "red");
 $result = array_diff ($array1, $array2);
+]]>
       </programlisting>
      </example>
     </para>     
     <para>
      これにより、<varname>$result</varname> は
-     <literal>array ("blue");</literal> となります。
+     <literal>array ("blue");</literal> となります。$array1に複数存在
+     する場合でも全て同様に処理されます。
     </para>
+    <note>
+     <simpara>
+      二つの要素は、<literal>(string) $elem1 === (string) $elem2</literal>
+      
+の場合のみ等しいと見直されます。言い換えると、文字列表現が同じ場合と
+      なります。
+      <!-- TODO: example of it... -->
+     </simpara>
+    </note>
+    <warning>
+     <simpara>
+      この関数は、PHP 4.0.4では動作しません!
+      <!-- TODO: when exactly was this broken?... -->
+     </simpara>
+    </warning>
     <para>
      <function>array_intersect</function>も参照下さい。
     </para>
@@ -324,6 +402,7 @@
      <example>
       <title><function>array_filter</function>の例</title>
       <programlisting role="php">
+<![CDATA[
 function odd($var) {
     return ($var % 2 == 1);
 }
@@ -332,11 +411,12 @@
     return ($var % 2 == 0); 
 }
 
-$array1 = array ("a"=&gt;1, "b"=&gt;2, "c"=&gt;3, "d"=&gt;4, "e"=&gt;5);
+$array1 = array ("a"=>1, "b"=>2, "c"=>3, "d"=>4, "e"=>5);
 $array2 = array (6, 7, 8, 9, 10, 11, 12);
 
 $odd_arr = array_filter($array1, "odd");
 $even_arr = array_filter($array2, "even");
+]]>
       </programlisting>
      </example>
     </para>     
@@ -346,6 +426,7 @@
      り、<varname>$even_arr</varname> は
      <literal>array (6, 8, 10, 12);</literal>となります。
     </para>
+    &note.func-callback;
     <para>
      <function>array_map</function>,
      <function>array_reduce</function>も参照下さい。
@@ -356,7 +437,7 @@
   <refentry id="function.array-flip">
    <refnamediv>
     <refname>array_flip</refname>
-    <refpurpose>配列の値を逆順にする</refpurpose>
+    <refpurpose>配列の値を反転にする</refpurpose>
    </refnamediv>
    <refsect1>
     <title>説明</title>
@@ -367,21 +448,45 @@
      </funcprototype>
     </funcsynopsis>
     <para>
-     <function>array_flip</function> は、配列を逆順にして返します。
+     <function>array_flip</function> は、配列を反転して返します。
+     すなわち、<parameter>trans</parameter>のキーは値となり、
+     <parameter>trans</parameter>の値はキーとなります。
+    </para>
+    <para>
+     
+<parameter>trans</parameter>の値は有効なキーを必要とすることに注意して
+     下さい。すなわち、キーは、<type>integer</type>または
+     
+<type>string</type>である必要があります。ある値が間違った型である場合、
+     
+警告が出力され、問題のこのキー/値の組は逆順にされません。
+    </para>
+    <para>
+     
+ある値が複数回出現した場合、最後のキーがその値として使用され、その他の
+     値は失われます。
+    </para>
+    <para>
+     <function>array_flip</function>は失敗した場合に&false;を返します。
     </para>
     <para>
      <example>
       <title><function>array_flip</function>の例</title>
       <programlisting role="php">
+<![CDATA[
 $trans = array_flip ($trans);
 $original = strtr ($str, $trans);
+]]>
+      </programlisting>
+     </example>
+    </para>
+    <para>
+     <example>
+      <title><function>array_flip</function>の例 : 衝突</title>
+      <programlisting role="php">
+<![CDATA[
+$trans = array ("a" => 1, "b" => 1, "c" => 2);
+$trans = array_flip ($trans);
+// ここで$transは次のようになります: array(1 => "b", 2 => "c");
+]]>
       </programlisting>
      </example>
-     <note>
-      <para>
-       この関数は、PHP 4.0で追加されました。
-      </para> 
-     </note>
     </para>
    </refsect1>
   </refentry>
@@ -412,6 +517,7 @@
      <example>
       <title><function>array_fill</function> の例</title>
       <programlisting role="php">
+<![CDATA[
 $a = array_fill(5, 6, 'banana');
 
 /*
@@ -424,6 +530,7 @@
 $a[9]  = "banana";
 $a[10] = "banana";
 */
+]]>
       </programlisting>
      </example>     
     </para>
@@ -443,9 +550,7 @@
       <paramdef>array <parameter>array1</parameter></paramdef>
       <paramdef>array <parameter>array2</parameter></paramdef>
       <paramdef>array
-       <parameter>
-       <replaceable><optional> ...</optional></replaceable>
-       </parameter>
+       <parameter><optional> ...</optional></parameter>
       </paramdef>
      </funcprototype>
     </funcsynopsis>
@@ -458,9 +563,11 @@
      <example>
       <title><function>array_intersect</function> の例</title>
       <programlisting role="php">
+<![CDATA[
 $array1 = array ("a" => "green", "red", "blue");
 $array2 = array ("b" => "green", "yellow", "red");
 $result = array_intersect ($array1, $array2);
+]]>
       </programlisting>
      </example>
     </para>     
@@ -468,12 +575,73 @@
      これにより、<varname>$result</varname> は
      <literal>array ("a" => "green", "red");</literal>となります。
     </para>
+    <note>
+     <simpara>
+      二つの要素は、
+      <literal>(string) $elem1 === (string) $elem2</literal>の場合のみ
+      
+等しいとみなされます。言い換えると、文字列表現が同じ場合となります。
+      <!-- TODO: example of it... -->
+     </simpara>
+    </note>
+    <warning>
+     <simpara>
+      この関数はPHP 4.0.4では動作しません!
+      <!-- TODO: when exactly was this broken?... -->
+     </simpara>
+    </warning>
     <para>
      <function>array_diff</function>も参照下さい。
     </para>
    </refsect1>
   </refentry>
 
+  <refentry id="function.array-key-exists">
+   <refnamediv>
+    <refname>array_key_exists</refname>
+    <refpurpose>
+     指定したキーまたは添字が配列にあるかどうかを調べる
+    </refpurpose>
+   </refnamediv>
+   <refsect1>
+    <title>説明</title>
+    <funcsynopsis>
+     <funcprototype>
+      <funcdef>bool <function>array_key_exists</function></funcdef>
+      <paramdef>mixed <parameter>key</parameter></paramdef>
+      <paramdef>array <parameter>search</parameter></paramdef>
+     </funcprototype>
+    </funcsynopsis>
+    <para>
+     指定した<parameter>key</parameter>が配列に設定されている場合、
+     <function>array_key_exists</function>は&true;を返します。
+     <parameter>key</parameter>は配列添字として使用できる全ての
+     値を使用可能です。
+    </para>
+    <para>
+     <example>
+      <title><function>array_key_exists</function>の例</title>
+      <programlisting role="php">
+<![CDATA[
+$search_array = array("first" => 1, "second" => 4);
+if (array_key_exists("first", $search_array)) {
+    echo "The 'first' element is in the array";
+}
+]]>
+      </programlisting>
+     </example>
+    </para>
+    <note>
+     <simpara>
+      この関数の名前は、PHPバージョン4.0.6では
+      <function>key_exists</function>です。
+     </simpara>
+    </note>
+    <para>
+     <function>isset</function>も参照下さい。
+    </para>
+   </refsect1>
+  </refentry>
+
   <refentry id="function.array-keys">
    <refnamediv>
     <refname>array_keys</refname>
@@ -486,9 +654,7 @@
       <funcdef>array <function>array_keys</function></funcdef>
       <paramdef>array <parameter>input</parameter></paramdef>
       <paramdef>mixed
-       <parameter>
-       <replaceable><optional>search_value</optional></replaceable>
-       </parameter>
+       <parameter><optional>search_value</optional></parameter>
       </paramdef>
      </funcprototype>
     </funcsynopsis>
@@ -505,6 +671,7 @@
      <example>
       <title><function>array_keys</function>の例</title>
       <programlisting role="php">
+<![CDATA[
 $array = array(0 => 100, "color" => "red");
 array_keys($array);       // array(0, "color")を返します
 
@@ -513,6 +680,7 @@
 
 $array = array ("color" =&gt; array("blue", "red", "green"), "size" =&gt; 
array("small", "medium", "large"));
 array_keys ($array);  //  配列("color", "size") を返します
+]]>
       </programlisting>
      </example>
     </para>
@@ -525,15 +693,18 @@
        PHP 3ユーザ用の<function>array_keys</function>の実装
        </title>
        <programlisting role="php">
+<![CDATA[
 function array_keys ($arr, $term="") {
     $t = array();
     while (list($k,$v) = each($arr)) {
-        if ($term &amp;&amp; $v != $term)
+        if ($term && $v != $term) {
             continue;
             $t[] = $k;
         }
-        return $t;
+    }
+    return $t;
 }
+]]>
        </programlisting>
       </example>
      </para>
@@ -547,7 +718,9 @@
   <refentry id="function.array-map">
    <refnamediv>
     <refname>array_map</refname>
-    
<refpurpose>指定した配列の要素にコールバック関数を適用する</refpurpose>
+    <refpurpose>
+     指定した配列の要素にコールバック関数を適用する
+    </refpurpose>
    </refnamediv>
    <refsect1>
     <title>説明</title>
@@ -572,12 +745,14 @@
      <example>
       <title><function>array_map</function> の例</title>
       <programlisting role="php">
+<![CDATA[
 function cube($n) {
        return $n*$n*$n;
 }
 
 $a = array(1, 2, 3, 4, 5);
 $b = array_map("cube", $a);
+]]>
       </programlisting>
      </example>
     </para>
@@ -589,6 +764,7 @@
      <example>
       <title><function>array_map</function> - より多くの配列を使用</title>
       <programlisting role="php">
+<![CDATA[
 function show_Spanish($n, $m) {
        return "The number $n is called $m in Spanish";
 }
@@ -647,6 +823,7 @@
 //         )
 // 
 // )
+]]>
       </programlisting>
      </example>
     </para>
@@ -664,8 +841,9 @@
     </para>
     <para>
      <example>
-      <title><function>array_map</function> - 配列の配列を作成する</title>
+      <title>配列の配列を作成する</title>
       <programlisting role="php">
+<![CDATA[
 $a = array(1, 2, 3, 4, 5);
 $b = array("one", "two", "three", "four", "five");
 $c = array("uno", "dos", "tres", "cuatro", "cinco");
@@ -712,6 +890,7 @@
 //         )
 // 
 // )
+]]>
       </programlisting>
      </example>
     </para>
@@ -734,10 +913,8 @@
       <funcdef>array <function>array_merge</function></funcdef>
       <paramdef>array <parameter>array1</parameter></paramdef>
       <paramdef>array <parameter>array2</parameter></paramdef>
-      <paramdef>
-       <parameter>
-       <replaceable><optional> ...</optional></replaceable>
-       </parameter>
+      <paramdef>array
+       <parameter><optional> ...</optional></parameter>
       </paramdef>
      </funcprototype>
     </funcsynopsis>
@@ -754,17 +931,19 @@
      <example>
       <title><function>array_merge</function>の例</title>
       <programlisting role="php">
+<![CDATA[
 $array1 = array ("color" => "red", 2, 4);
 $array2 = array ("a", "b", "color" => "green", "shape" => "trapezoid", 4);
-array_merge ($array1, $array2);
+$result = array_merge ($array1, $array2);
+]]>
       </programlisting>
-      <para>
-       返される配列は、array("color" => "green", 2, 4, "a", 
-       "b", "shape" => "trapezoid", 4)となります。
-      </para>
      </example>
     </para>
     <para>
+     返される配列は、<literal>array("color" =&gt; "green", 2, 4,
+      "a", "b", "shape" =&gt; "trapezoid", 4)</literal>となります。
+    </para>
+    <para>
      <function>array_merge_recursive</function>も参照下さい。
     </para>
    </refsect1>
@@ -782,10 +961,8 @@
       <funcdef>array <function>array_merge_recursive</function></funcdef>
       <paramdef>array <parameter>array1</parameter></paramdef>
       <paramdef>array <parameter>array2</parameter></paramdef>
-      <paramdef>
-       <parameter>
-       <replaceable><optional> ...</optional></replaceable>
-       </parameter>
+      <paramdef>array
+       <parameter><optional> ...</optional></parameter>
       </paramdef>
      </funcprototype>
     </funcsynopsis>
@@ -805,17 +982,20 @@
      <example>
       <title><function>array_merge_recursive</function>の例</title>
       <programlisting role="php">
-$ar1 = array("color" => array("favorite" => "red"), 5);
-$ar2 = array(10, "color" => array("favorite" => "green", "blue"));
-$result = array_merge_recursive($ar1, $ar2);
+<![CDATA[
+$ar1 = array ("color" => array ("favorite" => "red"), 5);
+$ar2 = array (10, "color" => array ("favorite" => "green", "blue"));
+$result = array_merge_recursive ($ar1, $ar2);
+]]>
       </programlisting>
-      <para>
-       返される配列は、array("color" => array("favorite" =>
-       array("red", "green"), "blue"), 5, 10)となります。
-      </para>
      </example>
     </para>
     <para>
+     返される配列は、<literal>array ("color" =&gt; array
+      ("favorite" =&gt; array ("red", "green"), "blue"), 5, 10)</literal>
+     となります。
+    </para>
+    <para>
      <function>array_merge</function>も参照下さい。
     </para>   
    </refsect1>
@@ -833,14 +1013,13 @@
       <funcdef>bool <function>array_multisort</function></funcdef>
       <paramdef>array <parameter>ar1</parameter></paramdef>
       <paramdef>mixed
-       <parameter>
-       <replaceable><optional>arg</optional></replaceable>
-       </parameter>
+       <parameter><optional>arg</optional></parameter>
       </paramdef>
-      <paramdef>
-       <parameter>
-       <replaceable><optional>...</optional></replaceable>
-       </parameter>
+      <paramdef>mixed
+       <parameter><optional>...</optional></parameter>
+      </paramdef>
+      <paramdef>array
+       <parameter><optional>...</optional></parameter>
       </paramdef>
      </funcprototype>
     </funcsynopsis>
@@ -893,36 +1072,43 @@
      およびSORT_REGULARにリセットします。
     </para>
     <para>
-     成功時に&true;、失敗した場合に
-     &false;を返します。
+     成功時に&true;、失敗した場合に&false;を返します。
     </para>
-    <example>
-     <title>複数の配列をソートする</title>
-     <programlisting role="php">
+    <para>
+     <example>
+      <title>複数の配列をソートする</title>
+      <programlisting role="php">
+<![CDATA[
 $ar1 = array ("10", 100, 100, "a");
 $ar2 = array (1, 3, "2", 1);
 array_multisort ($ar1, $ar2);
-     </programlisting>
-     <para>
-      この例では、ソートの後で、最初の配列は、10,"a", 100, 
100となりま
-      す。2番目の配列は、1, 1, "2", 
3を有します。最初の配列(100および
-      
100)の同じエントリに対応している2番目の配列のエントリは同時にソー
-      トされます。
-     </para>
-    </example>
-
-    <example>
-     <title>多次元の配列をソートする</title>
-     <programlisting role="php">
-$ar = array(array("10", 100, 100, "a"), array(1, 3, "2", 1));
-array_multisort($ar[0], SORT_ASC, SORT_STRING, $ar[1], SORT_NUMERIC, SORT_DESC);
-     </programlisting>
-     <para>
-      この例では、ソートされた後、最初の配列は10,100, 100, "a" 
(文字列
-      
として昇順っ½ートされています)を有しており、2番目の配列は、
-      1, 3, "2", 1 
(数値として降順にソートされています)となっています。
-     </para>
-    </example>
+]]>
+      </programlisting>
+     </example>
+    </para>
+    <para>
+     この例では、ソートの後で、最初の配列は、10,"a", 100, 
+100となりま
+     す。2番目の配列は、1, 1, "2", 
+3を有します。最初の配列(100および
+     
+100)の同じエントリに対応している2番目の配列のエントリは同時にソー
+     トされます。
+    </para>
+    <para>
+     <example>
+      <title>多次元の配列をソートする</title>
+      <programlisting role="php">
+<![CDATA[
+$ar = array (array ("10", 100, 100, "a"), array (1, 3, "2", 1));
+array_multisort ($ar[0], SORT_ASC, SORT_STRING, 
+                 $ar[1], SORT_NUMERIC, SORT_DESC);
+]]>
+      </programlisting>
+     </example>
+    </para>
+    <para>
+     この例では、ソートされた後、最初の配列は10,100, 100, "a" 
+(文字列
+     
+として昇順でソートされています)を有しており、2番目の配列は、
+     1, 3, "2", 1 
+(数値として降順にソートされています)となっています。
+    </para>
    </refsect1>
   </refentry>
  
@@ -955,6 +1141,7 @@
      <example>
       <title><function>array_pad</function>の例</title>
       <programlisting role="php">
+<![CDATA[
 $input = array (12, 10, 9);
  
 $result = array_pad ($input, 5, 0);
@@ -965,6 +1152,7 @@
  
 $result = array_pad ($input, 2, "noop");
 // 埋める処理は行われません。
+]]>
       </programlisting>
      </example>
     </para>
@@ -990,27 +1178,23 @@
      は、要素一つ分短くなります。<parameter>array</parameter> 
が空の場
      合、(または、配列でない場合、)&null;が返されます。
     </para>
-    <para>
-     <example>
-      <title><function>array_pop</function>の例</title>
-      <programlisting role="php">
+    <example>
+     <title><function>array_pop</function>の例</title>
+     <programlisting role="php">
+<![CDATA[
 $stack = array ("orange", "apple", "raspberry");
 $fruit = array_pop ($stack);
-      </programlisting>
-      <para>
-       これにより、$stackの要素は二つ("orange"および 
"apple")だけとなり、
-       $fruit は"raspberry"となります。
-      </para>
-     </example>
+]]>
+     </programlisting>
+    </example>
+    <para>
+     これにより、<varname>$stack</varname>要素は二つ("orange"および
+     
+"apple")だけとなり、<varname>$fruit</varname>は"raspberry"となります。
     </para>
+    &return.falseproblem;
     <para>
      <function>array_push</function>,<function>array_shift</function>, 
      <function>array_unshift</function>も参照下さい。
-     <note>
-      <para>
-       この関数は、PHP 4.0で追加されました。
-      </para>
-     </note>
     </para>
    </refsect1>
   </refentry>
@@ -1027,10 +1211,8 @@
       <funcdef>int <function>array_push</function></funcdef>
       <paramdef>array <parameter>array</parameter></paramdef>
       <paramdef>mixed <parameter>var</parameter></paramdef>
-      <paramdef>
-       <parameter>
-       <replaceable><optional>...</optional></replaceable>
-       </parameter>
+      <paramdef>mixed
+       <parameter><optional>...</optional></parameter>
       </paramdef>
      </funcprototype>
     </funcsynopsis>
@@ -1041,8 +1223,11 @@
      
<parameter>array</parameter>の長さは渡された変数の数だけ増加します。
      
各<parameter>var</parameter>毎に以下を繰り返すことと同じ効果があります。
      <programlisting role="php">
+<![CDATA[
 $array[] = $var;
+]]>
      </programlisting>
+     各<parameter>var</parameter>で繰り返されます。
     </para>
     <para>
      処理後の配列の中の要素の数を返します。
@@ -1051,20 +1236,20 @@
      <example>
       <title><function>array_push</function>の例</title>
       <programlisting role="php">
+<![CDATA[
 $stack = array (1, 2);
-array_push($stack, "+", 3);
+array_push ($stack, "+", 3);
+]]>
       </programlisting>
      </example>
-     
この例の結果、$stackには、4つの要素1,2,"+",3があることになります。
+    </para>
+    <para>
+     この例の結果、<varname>$stack</varname>には、4つの要素1,2,"+",
+     3があることになります。
     </para>
     <para>
      <function>array_pop</function>,<function>array_shift</function>, 
      <function>array_unshift</function>も参照下さい。
-     <note>
-      <para>
-       この関数は、 PHP 4.0で追加されました。 
-      </para>
-     </note>
     </para>
    </refsect1>
   </refentry>
@@ -1081,9 +1266,7 @@
       <funcdef>mixed <function>array_rand</function></funcdef>
       <paramdef>array <parameter>input</parameter></paramdef>
       <paramdef>int
-       <parameter>
-       <replaceable><optional>num_req</optional></replaceable>
-       </parameter>
+       <parameter><optional>num_req</optional></parameter>
       </paramdef>
      </funcprototype>
     </funcsynopsis>
@@ -1109,11 +1292,13 @@
      <example>
       <title><function>array_rand</function>の例</title>
       <programlisting role="php">
-srand((double)microtime() * 10000000);
-$input = array("Neo", "Morpheus", "Trinity", "Cypher", "Tank");
-$rand_keys = array_rand($input, 2);
+<![CDATA[
+srand ((float) microtime() * 10000000);
+$input = array ("Neo", "Morpheus", "Trinity", "Cypher", "Tank");
+$rand_keys = array_rand ($input, 2);
 print $input[$rand_keys[0]]."\n";
 print $input[$rand_keys[1]]."\n";
+]]>
       </programlisting>
      </example>
     </para>
@@ -1146,20 +1331,24 @@
      <example>
       <title><function>array_reverse</function>の例</title>
      <programlisting role="php">
+<![CDATA[
 $input = array ("php", 4.0, array ("green", "red"));
 $result = array_reverse ($input);
 $result_keyed = array_reverse ($input, TRUE);
+]]>
       </programlisting>
      </example>
+    </para>
+    <para>
      この例において、<varname>$result</varname>は、<literal>array
      (array ("green", "red"), 4.0, "php")</literal>となります。しかし、
      <varname>$result2[0]</varname>はまだ<literal>"php"</literal>です。
-     <note>
-      <para>
-       この関数は、PHP 4.0ベータ3で追加されました。
-      </para>
-     </note>
     </para>
+    <note>
+     <para>
+      2番目のパラメータは、PHP 4.0.3で追加されました。
+     </para>
+    </note>
    </refsect1>
   </refentry>
  
@@ -1184,17 +1373,17 @@
      </funcprototype>
     </funcsynopsis>
     <para>
-     <function>array_reduce</function> applies iteratively the
-     <parameter>callback</parameter> function to the elements of the
-     array <parameter>input</parameter>, so as to reduce the array to
-     a single value. If the optional <parameter>intial</parameter> is
-     avaliable, it will be used at the beginning of the process, or as
-     a final result in case the array is empty.
+     <function>array_reduce</function>は、配列<parameter>input</parameter>
+     の各要素に<parameter>callback</parameter>関数を繰り返し適用し、
+     
+配列を一つの値に減らします。オプション<parameter>intial</parameter>
+     
+が利用可能な場合、処理の最初で使用されたり、配列が空の場合の最終結果
+     として使用されます。
     </para>
     <para>
      <example>
-      <title><function>array_reduce</function> example</title>
+      <title><function>array_reduce</function>の例</title>
       <programlisting role="php">
+<![CDATA[
 function rsum($v, $w) {
     $v += $w;
     return $v;
@@ -1210,18 +1399,19 @@
 $b = array_reduce($a, "rsum");
 $c = array_reduce($a, "rmul", 10);
 $d = array_reduce($x, "rsum", 1);
+]]>
       </programlisting>
      </example>
     </para>
     <para>
-     This will result in <varname>$b</varname> containing
-     <literal>15</literal>, <varname>$c</varname> containing
-     <literal>1200</literal> (= 1*2*3*4*5*10), and
-     <varname>$d</varname> containing <literal>1</literal>.
+     これにより、<varname>$b</varname>の値は<literal>15</literal>
+     となり、<varname>$c</varname>の値は
+     <literal>1200</literal> (= 1*2*3*4*5*10)、そして、
+     <varname>$d</varname>の値は<literal>1</literal>となります。
     </para>
     <para>
-     See also <function>array_filter</function>,
-     <function>array_map</function>.
+     <function>array_filter</function>,
+     <function>array_map</function>も参照下さい。
     </para>
    </refsect1>
   </refentry>
@@ -1250,22 +1440,19 @@
      <example>
       <title><function>array_shift</function>の例</title>
       <programlisting role="php">
+<![CDATA[
 $args = array ("-v", "-f");
 $opt = array_shift ($args);
+]]>
       </programlisting>
      </example>
-     これにより、$argsには一つの要素"-f"が残り、$optは
-     "-v"となります。
+     これにより、<varname>$args</varname>には一つの要素"-f"が残り、
+     <varname>$opt</varname>は"-v"となります。
     </para>
     <para>
      <function>array_unshift</function>,
      <function>array_push</function>, 
      <function>array_pop</function>も参照下さい。
-     <note>
-      <para>
-       この関数は、PHP 4.0で追加されました。
-      </para>
-     </note>
     </para>
    </refsect1>
   </refentry>
@@ -1283,9 +1470,7 @@
       <paramdef>array <parameter>array</parameter></paramdef>
       <paramdef>int <parameter>offset</parameter></paramdef>
       <paramdef>int
-       <parameter>
-        <replaceable><optional>length</optional></replaceable>
-       </parameter>
+       <parameter><optional>length</optional></parameter>
       </paramdef>
      </funcprototype>
     </funcsynopsis>
@@ -1311,22 +1496,19 @@
      <example>
       <title><function>array_slice</function>の例</title>
       <programlisting role="php">
+<![CDATA[
 $input = array ("a", "b", "c", "d", "e");
 
 $output = array_slice ($input, 2);      // "c", "d", "e"を返します
 $output = array_slice ($input, 2, -1);  // "c", "d"を返します
 $output = array_slice ($input, -2, 1);  // "d"を返します
 $output = array_slice ($input, 0, 3);   // "a", "b", "c"を返します
+]]>
       </programlisting>
      </example>
     </para>
     <para>
      <function>array_splice</function>も参照下さい。
-     <note>
-      <para>
-       この関数は、PHP 4.0で追加されました。
-      </para>
-     </note>
     </para>     
    </refsect1>
   </refentry>
@@ -1344,14 +1526,10 @@
       <paramdef>array <parameter>input</parameter></paramdef>
       <paramdef>int <parameter>offset</parameter></paramdef>
       <paramdef>int
-       <parameter>
-       <replaceable><optional>length</optional></replaceable>
-       </parameter>
+       <parameter><optional>length</optional></parameter>
       </paramdef>
       <paramdef>array
-       <parameter>
-       <replaceable><optional>replacement</optional></replaceable>
-       </parameter>
+       <parameter><optional>replacement</optional></parameter>
       </paramdef>
      </funcprototype>
     </funcsynopsis>
@@ -1392,11 +1570,13 @@
     <para>
      以下は等価となります。
      <programlisting role="php">
+<![CDATA[
 array_push($input, $x, $y)     array_splice($input, count($input), 0, array($x, $y))
 array_pop($input)              array_splice($input, -1)
 array_shift($input)            array_splice($input, 0, 1)
 array_unshift($input, $x, $y)  array_splice($input, 0, 0, array($x, $y))
 $a[$x] = $y                    array_splice($input, $x, 1, $y)
+]]>
      </programlisting>
     </para>
     <para>
@@ -1406,25 +1586,29 @@
      <example>
       <title><function>array_splice</function>の例</title>
       <programlisting role="php">
-$input = array("red", "green", "blue", "yellow");
-
-array_splice($input, 2);      // $input は、array("red", "green") となります。
-array_splice($input, 1, -1);  // $input は、array("red", "yellow") 
となります。
-array_splice($input, 1, count($input), "orange");  
-                              // $input は、array("red", "orange") 
となります。
-array_splice($input, -1, 1, array("black", "maroon")); 
-                              // $input は、array("red", "green", 
-                              //    "blue", "black", "maroon") となります。
+<![CDATA[
+$input = array ("red", "green", "blue", "yellow");
+array_splice ($input, 2);      
+// $input is now array ("red", "green")
+
+$input = array ("red", "green", "blue", "yellow");
+array_splice ($input, 1, -1);  
+// $input is now array ("red", "yellow")
+
+$input = array ("red", "green", "blue", "yellow");
+array_splice ($input, 1, count($input), "orange");  
+// $input is now array ("red", "orange")
+
+$input = array ("red", "green", "blue", "yellow");
+array_splice ($input, -1, 1, array("black", "maroon")); 
+// $input is now array ("red", "green", 
+//          "blue", "black", "maroon")
+]]>
       </programlisting>
      </example>
     </para>
     <para>
      <function>array_slice</function>も参照下さい。
-     <note>
-      <para>
-       この関数は、PHP 4.0で追加されました。 
-      </para>
-     </note>
     </para>
    </refsect1>
   </refentry>
@@ -1452,6 +1636,7 @@
      <example>
       <title><function>array_sum</function> の例</title>
       <programlisting role="php">
+<![CDATA[
 $a = array(2,4,6,8);
 echo "sum(a) = ".array_sum($a)."\n";
 // 出力: sum(a) = 20
@@ -1459,9 +1644,16 @@
 $b = array("a"=>1.2,"b"=>2.3,"c"=>3.4);
 echo "sum(b) = ".array_sum($b)."\n";
 // 出力: sum(b) = 6.9
+]]>
       </programlisting>
      </example>
     </para>
+    <note>
+     <para>
+      
+4.0.6より前のバージョンのPHPは、渡された配列自体を修正し、文字列を
+      
+数値(これは値にもよるが多くの場合ゼロとなります)に変換していました。
+     </para>
+    </note>
    </refsect1>
   </refentry>
 
@@ -1481,21 +1673,69 @@
     <para>
      <function>array_unique</function> は、
      
<parameter>array</parameter>を入力とし、値に重複のない新規配列を
-     返します。キーは保持されることに注意して下さい。
+     返します。
+    </para>
+    <para>
+     キーは保持されることに注意して下さい。
+     
+<function>array_unique</function>は各値に関する最初のキーを保持し、
+     残りのキーを全て無視します。
     </para>
+    <note>
+     <simpara>
+      <literal>(string) $elem1 === (string) $elem2</literal>の場合のみ
+      
+二つの要素は等しいとみなされます。言い換えると、文字列表現が
+      同じ場合となります。
+      <!-- TODO: example of it... -->
+     </simpara>
+     <simpara>
+      最初の要素が使用されます。
+     </simpara>
+    </note>
+    <warning>
+     <simpara>
+      この関数は、PHP 4.0.4では使用できません!
+      <!-- TODO: when exactly was this broken?... -->
+     </simpara>
+    </warning>
     <para>
      <example>
       <title><function>array_unique</function> の例</title>
       <programlisting role="php">
+<![CDATA[
 $input = array ("a" => "green", "red", "b" => "green", "blue", "red");
 $result = array_unique ($input);
+print_r($result);
+// 出力は次のようになります :
+//Array
+//(
+//    [a] => green
+//    [0] => red
+//    [1] => blue
+//)
+]]>
       </programlisting>
      </example>
     </para>
     <para>
-     この例により、<varname>$result</varname> は、
-     <literal>array ("a" =>"green", "red", "blue");</literal>を有する
-     ことになります。
+     <example>
+      <title><function>array_unique</function>と型</title>
+      <programlisting role="php">
+<![CDATA[
+$input = array (4,"4","3",4,3,"3");
+$result = array_unique ($input);
+var_dump($result);
+
+/* 出力:
+array(2) {
+   [0]=>
+   int(4)
+   [1]=>
+   string(1) "3"
+}
+*/
+]]>
+      </programlisting>
+     </example>
     </para>
    </refsect1>
   </refentry>
@@ -1503,7 +1743,7 @@
   <refentry id="function.array-unshift">
    <refnamediv>
     <refname>array_unshift</refname>
-    <refpurpose> 一つ以上の要素を 配列の 最初に加える </refpurpose>
+    <refpurpose> 一つ以上の要素を配列の最初に加える </refpurpose>
    </refnamediv>
    <refsect1>
     <title>説明</title>
@@ -1512,10 +1752,8 @@
       <funcdef>int <function>array_unshift</function></funcdef>
       <paramdef>array <parameter>array</parameter></paramdef>
       <paramdef>mixed <parameter>var</parameter></paramdef>
-      <paramdef>
-       <parameter>
-       <replaceable><optional>...</optional></replaceable>
-       </parameter>
+      <paramdef>mixed
+       <parameter><optional>...</optional></parameter>
       </paramdef>
      </funcprototype>
     </funcsynopsis>
@@ -1531,22 +1769,19 @@
      <example>
       <title><function>array_unshift</function>の例</title>
       <programlisting role="php">
-$queue = array("p1", "p3");
-array_unshift($queue, "p4", "p5", "p6");
+<![CDATA[
+$queue = array ("p1", "p3");
+array_unshift ($queue, "p4", "p5", "p6");
+]]>
       </programlisting>
      </example>
-     この例により、$queue の要素は次の5つとなります。: "p4", 
"p5", "p6",
-     "p1", "p3" 
+     
+この例により、<varname>$queue</varname>の要素は次の5つとなります。
+     : "p4", "p5", "p6", "p1", "p3" 
     </para>
     <para>
      <function>array_shift</function>,
      <function>array_push</function>, 
      <function>array_pop</function>も参照下さい。
-     <note>
-      <para>
-       この関数は、PHP 4.0で追加されました。 
-      </para>
-     </note>
     </para>
    </refsect1>
   </refentry>
@@ -1572,15 +1807,37 @@
      <example>
       <title><function>array_values</function>の例</title>
       <programlisting role="php">
+<![CDATA[
 $array = array("size" => "XL", "color" => "gold");
 array_values($array);    // array("XL", "gold")を返します
+]]>
       </programlisting>
      </example>
-     <note>
-      <para>
-      この関数は、PHP 4.0で追加されました。
-      </para>
-     </note>
+    </para>
+    <note>
+     <para>
+      この関数は、PHP 4.0で追加されました。以下の実装はPHP 
+3でも
+      使用することが可能です。
+      <example>
+       <title>
+        PHP 3ユーザ用の<function>array_values</function>の実装
+       </title>
+       <programlisting role="php">
+<![CDATA[
+function array_values ($arr) {
+    $t = array();
+    while (list($k, $v) = each ($arr)) {
+        $t[] = $v;
+    }
+    return $t;
+}
+]]>
+       </programlisting>
+      </example>
+     </para>
+    </note>
+    <para>
+     <function>array_keys</function>も参照下さい。
     </para>
    </refsect1>
   </refentry>
@@ -1599,22 +1856,31 @@
       <funcdef>int <function>array_walk</function></funcdef>
       <paramdef>array <parameter>arr</parameter></paramdef>
       <paramdef>string <parameter>func</parameter></paramdef>
-      <paramdef>mixed <parameter>userdata</parameter></paramdef>
+      <paramdef>mixed 
+       <parameter><optional>userdata</optional></parameter>
+      </paramdef>
      </funcprototype>
     </funcsynopsis>
     <simpara>
      <parameter>arr</parameter>の各要素に<parameter>func</parameter> 
-     という名前の関数を適用します。
+     という名前のユーザ定義関数を適用します。
      <parameter>func</parameter>には、配列の値が最初の引数として
      
渡され、配列のキーが2番目のパラメータとして渡されます。
      
<parameter>userdata</parameter>が指定された場合、3番目の引数として
-     ユーザー関数に渡されます。
+     
+ユーザー関数に渡されます。<parameter>func</parameter>はユーザ定義の
+     
+関数である必要があり、ネーティブなPHP関数は使用できません。
+     つまり、<function>array_walk</function>を直接
+     <function>str2lower</function>と組み合わせることて使用することは
+     
+できません。まず、この関数を用いてユーザ定義関数を構築し、その関数
+     を引数として渡す必要があります。
+    </simpara>
+    &note.func-callback;
+    <simpara>
      
<parameter>func</parameter>が2つまたは3つを超える引数を必要とする場合、
      <parameter>userdata</parameter>の指定によっては、
      <function>array_walk</function>が<parameter>func</parameter>
-     をコールする度に警告が生成されます。
-     これらの警告は、<function>array_walk</function>の前に
-      '@'マークを付けるか
+     をコールする度に警告が生成されます。これらの警告は、
+     <function>array_walk</function>の前に'@'マークを付けるか
      <function>error_reporting</function>を使用することにより
       抑制されます。
     </simpara>
@@ -1625,11 +1891,15 @@
       
渡す必要があります。この場合、配列の要素に加えた変更は、配列自体
       に対して行われます。
      </para>
+     <para>
+      
+<parameter>func</parameter>の中から配列を修正すると予測できない
+      動作を引き起こす可能性があります。
+     </para>
     </note>
     <note>
      <para>
       キー及びuserdataを<parameter>func</parameter>に渡す処理は、
-      バージョン 4.0で追加されました。
+      バージョン4.0で追加されました。
      </para>
      <para>
       PHP 
4では、<function>array_walk</function>で配列のリセットがデフォ
@@ -1641,14 +1911,15 @@
      <example>
       <title><function>array_walk</function>の例</title>
       <programlisting role="php">
+<![CDATA[
 $fruits = array ("d"=>"lemon", "a"=>"orange", "b"=>"banana", "c"=>"apple");
- 
-function test_alter (&amp;$item1, $key, $prefix) {
-   $item1 = "$prefix: $item1";
+
+function test_alter (&$item1, $key, $prefix) {
+    $item1 = "$prefix: $item1";
 }
 
 function test_print ($item2, $key) {
-   echo "$key. $item2&lt;br&gt;\n";
+    echo "$key. $item2<br>\n";
 }
 
 array_walk ($fruits, 'test_print');
@@ -1656,6 +1927,7 @@
 array_walk ($fruits, 'test_alter', 'fruit');
 reset ($fruits);
 array_walk ($fruits, 'test_print');
+]]>
       </programlisting>
      </example>
     </para>
@@ -1670,7 +1942,7 @@
    <refnamediv>
     <refname>arsort</refname>
     <refpurpose>
-     
連想キーと要素との関係を維持しつつ配列を逆順にソートします
+     
+連想キーと要素との関係を維持しつつ配列を逆順にソートする
     </refpurpose>
    </refnamediv>
    <refsect1>
@@ -1680,9 +1952,7 @@
       <funcdef>void <function>arsort</function></funcdef>
       <paramdef>array <parameter>array</parameter></paramdef>
       <paramdef>int 
-       <parameter>
-       <replaceable><optional>sort_flags</optional></replaceable>
-       </parameter>
+       <parameter><optional>sort_flags</optional></parameter>
       </paramdef>
      </funcprototype>
     </funcsynopsis>
@@ -1690,24 +1960,32 @@
      
この関数は、連想配列において各配列のキーと要素との関係を維持しつ
      
つソートを行います。この関数は、主に実際の要素の並び方が重要であ
      る連想配列をソートするために使われます。
-     <example>
-      <title><function>arsort</function>の例</title>
-      <programlisting role="php">
+    </para>
+    <example>
+     <title><function>arsort</function>の例</title>
+     <programlisting role="php">
+<![CDATA[
 $fruits = array ("d"=>"lemon", "a"=>"orange", "b"=>"banana", "c"=>"apple");
 arsort ($fruits);
-reset($fruits);
-while(list($key,$val)=each($fruits)) {
+reset ($fruits);
+while (list ($key, $val) = each ($fruits)) {
  echo "$key = $val\n";
 }
-      </programlisting>
-     </example>
-     この例は、以下のように出力されます。
-     <computeroutput>
-fruits[a] = orange
-fruits[d] = lemon
-fruits[b] = banana
-fruits[c] = apple
-     </computeroutput>
+]]>
+     </programlisting>
+     <para>
+      この例は、以下のように出力されます。
+      <screen>
+<![CDATA[
+a = orange
+d = lemon
+b = banana
+c = apple
+]]>
+      </screen>
+     </para>
+    </example>
+    <para>
      
fruitsはアルファベットの逆順にソートされ、各要素とキーとの関係は
      維持されます。
     </para>
@@ -1727,7 +2005,9 @@
   <refentry id="function.asort">
    <refnamediv>
     <refname>asort</refname>
-    
<refpurpose>連想キーと要素との関係を維持しつつ配列をソートします</refpurpose>
+    <refpurpose>
+     連想キーと要素との関係を維持しつつ配列をソートする
+    </refpurpose>
    </refnamediv>
    <refsect1>
     <title>説明</title>
@@ -1736,9 +2016,7 @@
       <funcdef>void <function>asort</function></funcdef>
       <paramdef>array <parameter>array</parameter></paramdef>
       <paramdef>int 
-       <parameter>
-       <replaceable><optional>sort_flags</optional></replaceable>
-       </parameter>
+       <parameter><optional>sort_flags</optional></parameter>
       </paramdef>
      </funcprototype>
     </funcsynopsis>
@@ -1746,24 +2024,32 @@
      
この関数は、連想配列において各配列のキーと要素との関係を維持しつ
      
つ配列をソートします。この関数は、主に実際の要素の並び方が重要で
      ある連想配列をソートするために使われます。
-     <example>
-      <title><function>asort</function>の例</title>
-      <programlisting role="php">
+    </para>
+    <example>
+     <title><function>asort</function>の例</title>
+     <programlisting role="php">
+<![CDATA[
 $fruits = array ("d"=>"lemon", "a"=>"orange", "b"=>"banana", "c"=>"apple");
 asort ($fruits);
-reset($fruits);
-while(list($key,$val)=each($fruits)) {
- echo "$key = $val\n";
+reset ($fruits);
+while (list ($key, $val) = each ($fruits)) {
+    echo "$key = $val\n";
 }
-      </programlisting>
-     </example>
-     この例は、以下のように出力されます。
-     <computeroutput>
-fruits[c] = apple
-fruits[b] = banana
-fruits[d] = lemon
-fruits[a] = orange
-     </computeroutput>
+]]>
+     </programlisting>
+     <para>
+      この例は、以下のように出力されます。
+      <screen>
+<![CDATA[
+c = apple
+b = banana
+d = lemon
+a = orange
+]]>
+      </screen>
+     </para>
+    </example>
+    <para>
      
fruitsはアルファベットの昇順にソートされ、各要素とキーとの関係は
      維持されます。
     </para>
@@ -1791,12 +2077,9 @@
     <funcsynopsis>
      <funcprototype>
       <funcdef>array <function>compact</function></funcdef>
-      <paramdef><parameter>string varname | array
-       varnames</parameter></paramdef>
-      <paramdef>
-       <parameter>
-       <replaceable><optional>...</optional></replaceable>
-       </parameter>
+      <paramdef>mixed <parameter>varname</parameter></paramdef>
+      <paramdef>mixed
+       <parameter><optional>...</optional></parameter>
       </paramdef>
      </funcprototype>
     </funcsynopsis>
@@ -1820,6 +2103,7 @@
      <example>
       <title><function>compact</function>の例</title>
       <programlisting role="php">
+<![CDATA[
 $city = "San Francisco";
 $state = "CA";
 $event = "SIGGRAPH";
@@ -1827,20 +2111,18 @@
 $location_vars = array ("city", "state");
 
 $result = compact ("event", "nothing_here", $location_vars);
+]]>
       </programlisting>
       <para>
-       この例により、$resultは、array("event" => "SIGGRAPH", "city" 
-       => "San Francisco", "state" => "CA")となります。
+       この例により、<varname>$result</varname>は、
+       <literal>array
+       ("event" =&gt; "SIGGRAPH", "city" =&gt; "San Francisco",
+        "state" =&gt; "CA")</literal>となります。
       </para>
      </example>
     </para>
     <para>
      <function>extract</function>も参照下さい。
-     <note>
-      <para>
-       この関数は、PHP 4.0で追加されました。
-      </para>
-     </note>
     </para>
    </refsect1>
   </refentry>
@@ -1864,43 +2146,52 @@
      ありませんから)。
     </para>
     <para>
-     変数が配列でない場合は1を返します。
+     変数が配列でない場合は<literal>1</literal>を返します。
+     (例外: <literal>count(&null;)</literal> は<literal>0</literal>と等価)
     </para>
+    <warning>
+     <para>
+      
+<function>count</function>は、セットされていない変数に関して0を返
+      
+しますが、変数が空の配列として初期化されている場合にも0を返します。
+      ある変数がセットされているかどうかを調べるには、
+      <function>isset</function>を使用してください。
+     </para>
+    </warning>
     <para>
-     変数がセットされていない場合は0を返します。
-     <warning>
-      <para>
-       
<function>count</function>は、セットされていない変数に関して0を返
-       
しますが、変数が空の配列として初期化されている場合にも0を返します。
-       ある変数がセットされているかどうかを調べるには、
-       <function>isset</function>を使用してください。
-      </para>
-     </warning>
+     
+配列の実装やPHPでの使用法に関する詳細な説明についてはマニュアルの
+     <link linkend="language.types.array">配列</link>のセクションを
+     参照下さい。
     </para>
     <para>
      <example>
       <title><function>count</function> の例</title>
       <programlisting role="php">
+      <!-- TODO: examples about count(null), count(false), count(object).. -->
+<![CDATA[
 $a[0] = 1; 
 $a[1] = 3; 
 $a[2] = 5; 
 $result = count ($a);
-// 代入された要素は3であり、$result は 2ではなく3となる
+// $result == 3
 
-$a[2] = 1; 
-$a[4] = ""; 
-$a[6] = 5;
-$a[8] = 7;
-$a[10] = 11;
-$a[12] = "";
-$result = count ($a);
-// 代入された要素は4つなので、$result == 4 です。
+$b[0] = 7;
+$b[5] = 9;
+$b[10] = 11;
+$result = count ($b);
+// $result == 3;
+]]>
       </programlisting>
      </example>
     </para>
+    <note>
+     <para>
+      <function>sizeof</function>関数は、<function>count</function>
+      へのエイリアスです。
+     </para>
+    </note>
     <para>
-     <function>sizeof</function>, <function>isset</function>, 
-     <function>is_array</function>も参照下さい。
+     <function>is_array</function>, <function>isset</function>,
+     <function>strlen</function>も参照下さい。
     </para>
    </refsect1>
   </refentry>
@@ -1908,7 +2199,7 @@
   <refentry id="function.current">
    <refnamediv>
     <refname>current</refname>
-    <refpurpose>配列内の現在の要素を返す</refpurpose>
+    <refpurpose>配列内のカレントの要素を返す</refpurpose>
    </refnamediv>
    <refsect1>
     <title>説明</title>
@@ -1919,7 +2210,7 @@
      </funcprototype>
     </funcsynopsis>
     <para>
-     各配列は、"現在"の要素へのポインタを有しています。
+     各配列は、"カレント"の要素へのポインタを有しています。
      
このポインタは、その配列の最初の要素を指すように初期化されます。
     </para>
     <para>
@@ -1960,7 +2251,7 @@
      </funcprototype>
     </funcsynopsis>
     <para>
-     配列<parameter>array</parameter>から、次のキャh値のペアを返し、
+     
+配列<parameter>array</parameter>から、次のキーと値のペアを返し、
      
配列カーソルを進めます。このペアは、4つの要素を持つ配列で、
      それぞれの要素は<emphasis>0</emphasis>,<emphasis>1</emphasis>,
      <emphasis>key</emphasis>,<emphasis>value</emphasis>というキーを有
@@ -1976,32 +2267,35 @@
      <example>
       <title><function>each</function>の例</title>
       <programlisting role="php">
+<![CDATA[
 $foo = array ("bob", "fred", "jussi", "jouni", "egon", "marliese");
-$bar = each( $foo );
+$bar = each ($foo);
+]]>
       </programlisting>
       <para>
        
<literal>$bar</literal>は、ここでは以下のキー/値のペアを保持し
        ています。
        <itemizedlist spacing="compact">
-        <listitem><simpara>0 => 0</simpara></listitem>
-        <listitem><simpara>1 => 'bob'</simpara></listitem>
-        <listitem><simpara>key => 0</simpara></listitem>
-        <listitem><simpara>value => 'bob'</simpara></listitem>
+        <listitem><simpara>0 =&gt; 0</simpara></listitem>
+        <listitem><simpara>1 =&gt; 'bob'</simpara></listitem>
+        <listitem><simpara>key =&gt; 0</simpara></listitem>
+        <listitem><simpara>value =&gt; 'bob'</simpara></listitem>
        </itemizedlist>
-
        <programlisting role="php">
+<![CDATA[
 $foo = array ("Robert" => "Bob", "Seppo" => "Sepi");
 $bar = each ($foo);
+]]>
        </programlisting>
       </para>
       <para>
        
<literal>$bar</literal>は、この時点で以下のキー/値のペアを保持
        しています。
        <itemizedlist spacing="compact">
-        <listitem><simpara>0 => 'Robert'</simpara></listitem>
-        <listitem><simpara>1 => 'Bob'</simpara></listitem>
-        <listitem><simpara>key => 'Robert'</simpara></listitem>
-        <listitem><simpara>value => 'Bob'</simpara></listitem>
+        <listitem><simpara>0 =&gt; 'Robert'</simpara></listitem>
+        <listitem><simpara>1 =&gt; 'Bob'</simpara></listitem>
+        <listitem><simpara>key =&gt; 'Robert'</simpara></listitem>
+        <listitem><simpara>value =&gt; 'Bob'</simpara></listitem>
        </itemizedlist>
       </para>
      </example>
@@ -2009,24 +2303,27 @@
     <para>
      通常<function>each</function>は、配列の走査をす?_っk
      <function>list</function>と共に使用されます。例えば、
-     $HTTP_POST_VARSの場合は次のよFになります。
+     $HTTP_POST_VARSの場合は次のようになります。
      <example>
       <title>
        <function>each</function>により$HTTP_POST_VARSを走査する
       </title>
       <programlisting role="php">
-echo "POSTメソッドにより受け渡された値:&lt;br&gt;";
+<![CDATA[
+echo "POSTメソッドにより受け渡された値:<br>";
 reset ($HTTP_POST_VARS);
 while (list ($key, $val) = each ($HTTP_POST_VARS)) {
-   echo "$key => $val&lt;br&gt;";
+   echo "$key => $val<br>";
 }
+]]>
       </programlisting>
      </example>
     </para>
     <para>
      <function>each</function>を実行した後、配列カーソルは、
-     
配列の次の要素に移動し~す。配列の最終要素にカーソルがある場合は、
-     最終要素にとどまります。
+     
+配列の次の要素に移動します。配列の最終要素にカーソルがある場合は、
+     
+最終要素にとどまります。eachを使用して配列を走査するには、
+     <function>reset</function>を使用する必要があります。
     </para>
     <para>
      <function>key</function>、<function>list</function>、
@@ -2178,8 +2475,9 @@
      <example>
       <title><function>extract</function>の例</title>
       <programlisting role="php">
-&lt;?php
- 
+<![CDATA[
+<?php
+
 /* $var_array はwddx_deserializeから返された配列と仮定します
  */
 $size = "large";
@@ -2191,21 +2489,26 @@
 print "$color, $size, $shape, $wddx_size\n";
  
 ?>
+]]>
       </programlisting>
      </example>
     </para>
     <para>
      上記の例の結果は以下となります。
      <programlisting>
+<![CDATA[
 blue, large, sphere, medium
+]]>
      </programlisting>
     </para>
     <para>
-     EXTR_PREFIX_SAMEを指定したため、$sizeは上書きされず、$wddx_size
-     が作成されます。
+     EXTR_PREFIX_SAMEを指定したため、<varname>$size</varname>は上書き
+     されず、<varname>$wddx_size</varname>が作成されます。
      
EXTR_SKIPが指定された場合、$wddx_sizeは作成されません。EXTR_OVERWRITE
-     
の場合は、$sizeの値は"medium"となります。EXTR_PREFIX_ALLの場合は
-     新規の変数 $wddx_color, $wddx_size, $wddx_shapeが作成されます。
+     の場合は、<varname>$size</varname>の値は"medium"となります。
+     EXTR_PREFIX_ALLの場合は新規の変数<varname>$wddx_color</varname>,
+     <varname>$wddx_size</varname>, <varname>$wddx_shape</varname>
+     が作成されます。
     </para>
     <para>
      
連想配列を使用する必要があり、数値添字の配列には結果は出力されま
@@ -2237,8 +2540,7 @@
     <para>
      <parameter>haystack</parameter>で
      <parameter>needle</parameter>を検索し、配列にそれがあった場合に
-     &true;、それ以外の場合は、
-     &false;を返します。
+     &true;、それ以外の場合は、&false;を返します。
     </para>
     <para>
      3番目のパラメータ<parameter>strict</parameter>が
@@ -2246,14 +2548,25 @@
      <function>in_array</function>は、<parameter>haystack</parameter>
      の中の <parameter>needle</parameter>の型も確認します。
     </para>
+    <note>
+     <para>
+      
+<parameter>needle</parameter>が文字列の場合、比較の際に大文字小文字
+      は区別されます。
+     </para>
+    </note>
     <para>
      <example>
       <title><function>in_array</function>の例</title>
       <programlisting role="php">
+<![CDATA[
 $os = array ("Mac", "NT", "Irix", "Linux");
-if (in_array ("Irix", $os)){
+if (in_array ("Irix", $os)) {
     print "Got Irix";
 }
+if (in_array ("mac", $os)) { # 
+in_array()は大文字小文字を区別するため失敗
+    print "Got mac";
+}
+]]>
       </programlisting>
      </example>
     </para>
@@ -2261,18 +2574,20 @@
      <example>
       <title>strictを指定した<function>in_array</function>の例</title>
       <programlisting role="php">
-&lt;?php
+<![CDATA[
+<?php
 $a = array('1.10', 12.4, 1.13);
 
 if (in_array('12.4', $a, TRUE))
-    echo &quot;'12.4' found with strict check\n&quot;;
+    echo "'12.4' found with strict check\n";
 if (in_array(1.13, $a, TRUE))
-    echo &quot;1.13 found with strict check\n&quot;;
-?&gt;
+    echo "1.13 found with strict check\n";
+?>
 
-// この例は以下のような出力となります。
+// 以下のような出力となります。
 
 1.13 found with strict check
+]]>
       </programlisting>
      </example>
     </para>
@@ -2296,14 +2611,15 @@
       <funcdef>mixed <function>array_search</function></funcdef>
       <paramdef>mixed <parameter>needle</parameter></paramdef>
       <paramdef>array <parameter>haystack</parameter></paramdef>
-      <paramdef>bool <parameter>strict</parameter></paramdef>
+      <paramdef>bool 
+       <parameter><optional>strict</optional></parameter>
+      </paramdef>    
      </funcprototype>
     </funcsynopsis>
     <para>
      <parameter>haystack</parameter>において
      
<parameter>needle</parameter>を検索し、配列中に見付かった場合にそ
-     のキーを返します。そうでない場合に&false;を返し
-     ます。
+     のキーを返します。そうでない場合に&false;を返します。
     </para>
     <para>
      3番目のパラメータ<parameter>strict</parameter>が
@@ -2312,6 +2628,7 @@
      <parameter>haystack</parameter>の中にある
      <parameter>needle</parameter>の型も確認します。
     </para>
+    &return.falseproblem;
     <para>
      <function>in_array</function>も参照下さい。
     </para>
@@ -2366,21 +2683,31 @@
      <example>
       <title><function>krsort</function>の例</title>
       <programlisting role="php">
+<![CDATA[
 $fruits = array ("d"=>"lemon", "a"=>"orange", "b"=>"banana", "c"=>"apple");
 krsort ($fruits);
 reset($fruits);
 while(list($key,$val)=each($fruits)) {
  echo "$key -> $val\n";
 }
+]]>
       </programlisting>
      </example>
+    </para>
+    <para>
      この例の出力は次のようになります。
-     <computeroutput>
-fruits[d] = lemon
-fruits[c] = apple
-fruits[b] = banana
-fruits[a] = orange
-     </computeroutput>
+    </para>
+    <para>
+     <informalexample>
+      <programlisting>
+<![CDATA[
+d = lemon
+c = apple
+b = banana
+a = orange
+]]>
+      </programlisting>
+     </informalexample>
     </para>
     <para>
      オプションのパラメータ<parameter>sort_flags</parameter>によりソー
@@ -2390,7 +2717,7 @@
     <simpara>
      <function>asort</function>, <function>arsort</function>, 
      <function>ksort</function>, <function>sort</function>, 
-     <function>rsort</function>も参照下さい。
+     <function>natsort</function>, <function>rsort</function>も参照下さい。
     </simpara>
    </refsect1>
   </refentry>
@@ -2419,28 +2746,37 @@
     <example>
       <title><function>ksort</function>の例</title>
       <programlisting role="php">
+<![CDATA[
 $fruits = array ("d"=>"lemon", "a"=>"orange", "b"=>"banana", "c"=>"apple");
 ksort ($fruits);
-reset($fruits);
-while(list($key,$val)=each($fruits)) {
- echo "$key -> $val\n";
+reset ($fruits);
+while (list ($key, $val) = each ($fruits)) {
+    echo "$key = $val\n";
 }
+]]>
       </programlisting>
      </example>
+    </para>
+    <para>
      この例では以下のように出力が行われます。
-     <computeroutput>
-fruits[a] = orange
-fruits[b] = banana
-fruits[c] = apple
-fruits[d] = lemon
-     </computeroutput>
+    </para>
+    <para>
+     <informalexample>
+      <programlisting>
+<![CDATA[
+a = orange
+b = banana
+c = apple
+d = lemon
+]]>
+      </programlisting>
+     </informalexample>     
     </para>
     <para>
      オプションのパラメータ<parameter>sort_flags</parameter>によりソー
      
トの動作を修正可能です。詳細については、<function>sort</function>
      を参照下さい。
     </para>
-
     <simpara>
      <function>asort</function>, <function>arsort</function>, 
      <function>sort</function>,  <function>natsort</function>,
@@ -2476,25 +2812,27 @@
      <example>
       <title><function>list</function>の例</title>
       <programlisting role="php">
-&lt;table>
- &lt;tr>
-  &lt;th>従業員名&lt;/th>
-  &lt;th>給与&lt;/th>
- &lt;/tr>
-
-&lt;?php
-
-$result = mysql_query ($conn, "SELECT id, name, salary FROM employees");
-while (list($id, $name, $salary) = mysql_fetch_row($result)) {
-    print(" &lt;tr>\n".
-          "  &lt;td>&lt;a href=\"info.php3?id=$id\">$name&lt;/a>&lt;/td>\n".
-          "  &lt;td>$salary&lt;/td>\n".
-          " &lt;/tr>\n");
+<![CDATA[
+<table>
+ <tr>
+  <th>社員名</th>
+  <th>給料</th>
+ </tr>
+
+<?php
+
+$result = mysql_query ("SELECT id, name, salary FROM employees",$conn);
+while (list ($id, $name, $salary) = mysql_fetch_row ($result)) {
+    print (" <tr>\n".
+           "  <td><a href=\"info.php3?id=$id\">$name</a></td>\n".
+           "  <td>$salary</td>\n".
+           " </tr>\n");
 }
 
 ?>
 
-&lt;/table>
+</table>
+]]>
       </programlisting>
      </example>
     </para>
@@ -2531,8 +2869,9 @@
      <example>
       <title><function>natsort</function>の例</title>
       <programlisting role="php">
-$array1 = $array2 = array ("img12.png","img10.png","img2.png","img1.png");          
-
+<![CDATA[
+$array1 = $array2 = array ("img12.png", "img10.png", "img2.png", "img1.png");
+ 
 sort($array1);
 echo "Standard sorting\n";
 print_r($array1);
@@ -2540,6 +2879,7 @@
 natsort($array2);
 echo "\nNatural order sorting\n";
 print_r($array2);
+]]>
       </programlisting>
      </example>
     </para>
@@ -2549,6 +2889,7 @@
     <para>
      <informalexample>
       <programlisting>
+<![CDATA[
 Standard sorting
 Array
 (
@@ -2566,6 +2907,7 @@
     [1] => img10.png
     [0] => img12.png
 )
+]]>
       </programlisting>
      </informalexample>
      より詳細な情報については、Martin Poolの<ulink
@@ -2733,16 +3075,56 @@
     <funcsynopsis>
      <funcprototype>
       <funcdef>array <function>range</function></funcdef>
-      <paramdef>int <parameter>low</parameter></paramdef>
-      <paramdef>int <parameter>high</parameter></paramdef>
+      <paramdef>mixed <parameter>low</parameter></paramdef>
+      <paramdef>mixed <parameter>high</parameter></paramdef>
      </funcprototype>
     </funcsynopsis>
     <para>
      <function>range</function>は、<parameter>low</parameter>から
      <parameter>high</parameter>までの整数の配列を返します。
+     low > highの場合、順番はhighからlowとなります。
     </para>
+    <example>
+     <title><function>range</function>の例</title>
+     <programlisting role="php">
+<![CDATA[
+foreach(range(0, 9) as $number) {
+    echo $number;
+}
+foreach(range('a', 'z') as $letter) {
+    echo $letter;
+}
+foreach(range('z', 'a') as $letter) {
+    echo $letter;
+}
+]]>
+     </programlisting>
+    </example>
+    <note>
+     <para>
+      4.1.0より前のバージョンでは、<function>range</function>関数は、
+      
+昇順の整数配列のみを生成しました。文字シーケンス及び降順の配列
+      のサポートが4.1.0で追加されました。
+     </para>
+     <example>
+      
+<title>デクリメントする範囲及び文字シーケンスの模擬</title>
+      <programlisting role="php">
+<![CDATA[
+# 範囲の順番を反転するためにarray_reverseを使用可能
+foreach(array_reverse(range(0,9)) as $number) {
+    echo $number;
+}
+
+# chr()を用いて整数を文字に変換するためにarray_map()を使用可能
+foreach(array_map('chr', range(ord('a'),ord('z'))) as $character) {
+    echo $character;
+}
+]]>
+      </programlisting>
+     </example>
+    </note>
     <para>
-     使用例については、<function>shuffle</function>を参照下さい。
+     
+その他の使用例については、<function>shuffle</function>を参照下さい。
     </para>
    </refsect1>
   </refentry>
@@ -2770,12 +3152,8 @@
      <function>reset</function>は、配列の最初の要素の値を返します。
     </para>
     <para>
-     <function>current</function>, 
-     <function>each</function>, 
-     <function>next</function>
-     <function>prev</function>, 
-     <function>reset</function>
-     も参照下さい。
+     <function>current</function>, <function>each</function>, 
+     <function>next</function>, <function>prev</function>も参照下さい。
     </para>
    </refsect1>
   </refentry>
@@ -2803,21 +3181,33 @@
      <example>
       <title><function>rsort</function>の例</title>
       <programlisting role="php">
+<![CDATA[
 $fruits = array ("lemon", "orange", "banana", "apple");
 rsort ($fruits);
-reset($fruits);
-while(list($key,$val)=each($fruits)) {
- echo "$key -> $val\n";
+reset ($fruits);
+while (list ($key, $val) = each ($fruits)) {
+    echo "$key = $val\n";
 }
+]]>
       </programlisting>
      </example>
-    この例では以下のように表示します。
-     <computeroutput>
-fruits[0] = orange
-fruits[1] = lemon
-fruits[2] = banana
-fruits[3] = apple
-    </computeroutput>
+    </para>
+    <para>
+     この例の出力は以下のようになります。
+    </para>
+    <para>
+     <informalexample>
+      <programlisting>
+<![CDATA[
+0 = orange
+1 = lemon
+2 = banana
+3 = apple
+]]>
+      </programlisting>
+     </informalexample>
+    </para>
+    <para>
      fruitsはアルファベットの逆順にソートされました。
     </para>
     <para>
@@ -2853,21 +3243,21 @@
      <example>
       <title><function>shuffle</function>の例</title>
       <programlisting role="php">
+<![CDATA[
 $numbers = range (1,20);
-srand ((double)microtime()*1000000);
+srand ((float)microtime()*1000000);
 shuffle ($numbers);
-while (list(, $number) = each ($numbers)) {
+while (list (, $number) = each ($numbers)) {
     echo "$number ";
 }
+]]>
       </programlisting>
      </example>
     </para>
     <para>
      <function>arsort</function>,<function>asort</function>,
      <function>ksort</function>,<function>rsort</function>,
-     <function>natsort</function>, <function>natcasesort</function>,
-     <function>sort</function>,<function>usort</function>,
-     <function>uksort</function>も参照下さい。
+     <function>sort</function>,<function>usort</function>も参照下さい。
     </para>
    </refsect1>
   </refentry>
@@ -2919,29 +3309,33 @@
      <example>
       <title><function>sort</function>の例</title>
     <programlisting role="php">
-&lt;?php
+<![CDATA[
+<?php
 
 $fruits = array ("lemon", "orange", "banana", "apple");
 sort ($fruits);
 reset ($fruits);
-while (list ($key,$val) = each ($fruits)) {
- echo "fruits[".$key."] = ".$val; 
+while (list ($key, $val) = each ($fruits)) {
+    echo "fruits[".$key."] = ".$val."\n";
 }
-
-?&gt;
+ 
+?>
+]]>
       </programlisting>
      </example>
     </para>
     <para>
-     この例では以下のように表示します。
+     この例の出力は以下のようになります。
     </para>
     <para>
      <informalexample>
       <programlisting>
+<![CDATA[
 fruits[0] = apple
 fruits[1] = banana
 fruits[2] = lemon
 fruits[3] = orange
+]]>
       </programlisting>
      </informalexample>
     </para>
@@ -3013,6 +3407,7 @@
       参照下さい。
      </para>
     </note>
+    &note.func-callback;
     <para>
      <function>usort</function>, <function>uksort</function>, 
      <function>sort</function>, <function>asort</function>, 
@@ -3043,10 +3438,11 @@
      
この関数は、ユーザー定義の比較関数を用いて配列のキーをソートします。
      
ソートしたい配列を複雑な基準でソートする必要がある場合には、
      この関数を使う必要があります。
-
-     <example>
-      <title><function>uksort</function>の例</title>
-      <programlisting role="php">
+    </para>
+    <example>
+     <title><function>uksort</function>の例</title>
+     <programlisting role="php">
+<![CDATA[
 function cmp ($a, $b) {   
     if ($a == $b) return 0;
     return ($a > $b) ? -1 : 1;
@@ -3059,21 +3455,30 @@
 while (list ($key, $value) = each ($a)) {
     echo "$key: $value\n";
 }
-      </programlisting>
-     </example>
+]]>
+     </programlisting>
+    </example>
+    <para>
      この例による出力は以下のようになります。
-     <computeroutput>
+    </para>
+    <para>
+     <informalexample>
+      <programlisting>
+<![CDATA[
 20: twenty
 10: ten
 4: four
 3: three
-     </computeroutput>
+]]>
+      </programlisting>
+     </informalexample>
     </para>
+    &note.func-callback;
     <para>
      <function>usort</function>, <function>uasort</function>, 
      <function>sort</function>, <function>asort</function>, 
      <function>arsort</function>, <function>ksort</function>,
-     <function>rsort</function>, <function>natsort</function>
+     <function>natsort</function>, <function>rsort</function>
      も参照下さい。
     </para>
    </refsect1>
@@ -3092,7 +3497,7 @@
      <funcprototype>
       <funcdef>void <function>usort</function></funcdef>
       <paramdef>array <parameter>array</parameter></paramdef>
-      <paramdef>function <parameter>cmp_function</parameter></paramdef>
+      <paramdef>string <parameter>cmp_function</parameter></paramdef>
      </funcprototype>
     </funcsynopsis>
     <para>
@@ -3101,13 +3506,20 @@
      この関数を使用するべきです。
     </para>
     <para>
-     
比較関数は、最初の引数が二番目の引数より小さいか等しいか大きい場合に
-     
それぞれゼロ未満、ゼロに等しい、ゼロより大きい整数を返します。二つの
-     
メンバーの?較結果が等しいとなった場合、ソートされた配列の順番は定義
-     されません。
+     
+比較関数は、最初の引数が2番目の引数より小さいか、等しいか、大きい
+     
+場合に、それぞれゼロ未満、ゼロに等しい、ゼロより大きい整数を返す
+     
+必要があります。2つのメンバーの比較結果が等しいとなった場合、
+     ソートされた配列の順番は定義されません。
+    </para>
+    <para>
+     
+比較関数としてあるオブジェクトのメンバー関数を使用することも可能です。
+     以下の例3を参照下さい。
+    </para>
+    <para>
      <example>
       <title><function>usort</function>の例</title>
        <programlisting role="php">
+<![CDATA[
 function cmp ($a, $b) {   
     if ($a == $b) return 0;
     return ($a > $b) ? -1 : 1;
@@ -3120,6 +3532,7 @@
 while (list ($key, $value) = each ($a)) {
     echo "$key: $value\n";
 }
+]]>
       </programlisting>
      </example>
     </para>
@@ -3129,24 +3542,27 @@
    <para>
     <informalexample>
      <programlisting>
+<![CDATA[
 0: 6
 1: 5
 2: 3
 3: 2
 4: 1
+]]>
      </programlisting>
     </informalexample>
    </para>
     <note>
      <para>
       もちろん、このような簡単な例では<function>rsort</function>関数
-      の方がよォiしfいます。
+      の方がより適当です。
      </para>
     </note>
     <para>
      <example>
       <title>多次元配列を使用する<function>usort</function>の例</title>
       <programlisting role="php">
+<![CDATA[
 function cmp ($a, $b) {
     return strcmp($a["fruit"],$b["fruit"]);
 } 
@@ -3160,6 +3576,7 @@
 while (list ($key, $value) = each ($fruits)) {
     echo "\$fruits[$key]: " . $value["fruit"] . "\n";
 }
+]]>
       </programlisting>
      </example>
     </para>
@@ -3173,26 +3590,76 @@
     <para>
      <informalexample>
       <programlisting>
+<![CDATA[
 $fruits[0]: apples
 $fruits[1]: grapes
 $fruits[2]: lemons
+]]>
       </programlisting>
      </informalexample>
     </para>
     <para>
-     <warning>
-      <para>
-       (Solarisシステムのような)いくつかのCライブラリに含まれる
-       
quicksort関数は、比較関数が適当な値を返さない場合にPHPをクラッ
-       シュさせる可能性があります。
-      </para>
-     </warning>
+     <example>
+      <title>
+       
+<function>usort</function>でオブジェクトのメンバ関数を使用する例
+      </title>
+      <programlisting role="php">
+<![CDATA[
+class TestObj {
+    var $name;
+
+    function TestObj($name)
+    {
+        $this->name = $name;
+    }
+
+    /* 静的な比較関数: */
+    function cmp_obj($a, $b)
+    {
+        $al = strtolower($a->name);
+        $bl = strtolower($b->name);
+        if ($al == $bl) return 0;
+        return ($al > $bl) ? +1 : -1;
+    }
+}
+
+$a[] = new TestObj("c");
+$a[] = new TestObj("b");
+$a[] = new TestObj("d");
+
+uasort($a, array ("TestObj", "cmp_obj"));
+
+foreach ($a as $item) {
+    print $item->name."\n";
+}
+]]>
+      </programlisting>
+     </example>
+    </para>
+    <para>
+     この例の出力は以下のようになります。
+    </para>
+    <para>
+     <informalexample>
+      <programlisting>
+b
+c
+d
+      </programlisting>
+     </informalexample>
     </para>
+    <warning>
+     <para>
+      (Solarisシステムのような)いくつかのCライブラリに含まれる
+      
+quicksort関数は、比較関数が適当な値を返さない場合にPHPをクラッ
+      シュさせる可能性があります。
+     </para>
+    </warning>
     <para>
      <function>uasort</function>, <function>uksort</function>, 
      <function>sort</function>, <function>asort</function>, 
      <function>arsort</function>, <function>ksort</function>,
-     <function>rsort</function>, <function>natsort</function>
+     <function>natsort</function>, <function>rsort</function>
      も参照下さい。
     </para>
    </refsect1>


Reply via email to