hirokawa                Mon Nov 12 10:28:09 2001 EDT

  Added files:                 
    /phpdoc/ja/functions        overload.xml 

  Modified files:              
    /phpdoc/ja/functions        array.xml 
  Log:
  added overload.xml in japanese manual.
  
Index: phpdoc/ja/functions/array.xml
diff -u phpdoc/ja/functions/array.xml:1.33 phpdoc/ja/functions/array.xml:1.34
--- phpdoc/ja/functions/array.xml:1.33  Sun Oct 14 09:53:19 2001
+++ phpdoc/ja/functions/array.xml       Mon Nov 12 10:28:09 2001
@@ -1,5 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- $Revision: 1.34 $ -->
  <reference id="ref.array">
-  <title>配列関数</title>
+  <title>配列関数(array)</title>
   <titleabbrev>Arrays</titleabbrev>
   <partintro>
    <simpara>
@@ -7,12 +9,17 @@
     
になります。配列は、変数の組を保存、管理、操作する基本的な要素です。
    </simpara>
    <simpara>
-    
単純な配列および多次元配列がサポートされており、ユーザが定義したり、
-    他の関数で作成することも可能です。
-    
いくつかのデータベース処理関数は、データベースのクエリから配列を返
-    しますし、複数の関数は、配列を返します。
+    
+通常の配列および多次元配列がサポートされており、ユーザが定義したり、
+    
+他の関数で作成することも可能です。いくつかのデータベース処理関数は、
+    
+データベースのクエリから配列を返しますし、いくつかの関数は配列を返
+    します。
    </simpara>
    <para>
+    
+PHPでの配列の実装や使用方法の詳細については、マニュアルの
+    <link linkend="language.types.array">配列</link>に関する節を参照下
+    さい。
+   </para>
+   <para>
     <function>is_array</function>, <function>explode</function>, 
     <function>implode</function>, <function>split</function>,
     <function>join</function>も参照下さい。
@@ -121,6 +128,94 @@
    </refsect1>
   </refentry>
 
+  <refentry id="function.array-chunk">
+   <refnamediv>
+    <refname>array_chunk</refname>
+    <refpurpose>配列を分割する</refpurpose>
+   </refnamediv>
+   <refsect1>
+    <title>説明</title>
+    <funcsynopsis>
+     <funcprototype>
+      <funcdef>array <function>array_chunk</function></funcdef>
+      <paramdef>array <parameter>input</parameter></paramdef>
+      <paramdef>int <parameter>size</parameter></paramdef>
+      <paramdef>bool 
+       <parameter><optional>preserve_keys</optional></parameter>
+      </paramdef>
+     </funcprototype>
+    </funcsynopsis>
+    <para>
+     <function>array_chunk</function> は、各配列が
+     
+<parameter>size</parameter>個の値を有するように配列を複数の配列に
+     
+分割します。最後の配列には指定した数よりも少ない個数の値が含まれ
+     
+る可能性があります。ゼロから始まる添字を有する多次元配列のメンバー
+     としてこれらの配列を取得します。
+    </para>
+    <para>
+     オプションの引数<parameter>preserve_keys</parameter>に&true;を設
+     
+定することにより、配列inputから取得した元のキーを維持させることが
+     
+可能です。&false;を指定した場合、返される各配列ではゼロから始まる
+     新しい添字が使用されます。デフォルトは、&false;です。
+    </para>
+    <para>
+     <example>
+      <title><function>array_chunk</function> の例</title>
+      <programlisting role="php">
+$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>
+Array
+(
+    [0] => Array
+        (
+            [0] => a
+            [1] => b
+        )
+
+    [1] => Array
+        (
+            [0] => c
+            [1] => d
+        )
+
+    [2] => Array
+        (
+            [0] => e
+        )
+
+)
+Array
+(
+    [0] => Array
+        (
+            [0] => a
+            [1] => b
+        )
+
+    [1] => Array
+        (
+            [2] => c
+            [3] => d
+        )
+
+    [2] => Array
+        (
+            [4] => e
+        )
+
+)
+      </programlisting>
+     </informalexample>
+    </para>
+   </refsect1>
+  </refentry>
+
   <refentry id="function.array-count-values">
    <refnamediv>
     <refname>array_count_values</refname>
@@ -201,6 +296,63 @@
    </refsect1>
   </refentry>
 
+  <refentry id="function.array-filter">
+   <refnamediv>
+    <refname>array_filter</refname>
+    <refpurpose>
+     コールバック関数を使用する配列要素フィルタ
+    </refpurpose>
+   </refnamediv>
+   <refsect1>
+    <title>説明</title>
+    <funcsynopsis>
+     <funcprototype>
+      <funcdef>array <function>array_filter</function></funcdef>
+      <paramdef>array <parameter>input</parameter></paramdef>
+      <paramdef>mixed 
+       <parameter><optional>callback</optional></parameter>
+      </paramdef>
+     </funcprototype>
+    </funcsynopsis>
+    <para>
+     <function>array_filter</function> は、コールバック関数によりフィ
+     
+ルタ処理が行われた<parameter>input</parameter>の全ての要素を含む
+     
+配列を返します。<parameter>input</parameter>が連想配列の場合、キー
+     は保存されます。
+    </para>
+    <para>
+     <example>
+      <title><function>array_filter</function>の例</title>
+      <programlisting role="php">
+function odd($var) {
+    return ($var % 2 == 1);
+}
+
+function even($var) {
+    return ($var % 2 == 0); 
+}
+
+$array1 = array ("a"=&gt;1, "b"=&gt;2, "c"=&gt;3, "d"=&gt;4, "e"=&gt;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>     
+    <para>
+     この例により、<varname>$odd_arr</varname> は
+     <literal>array ("a"=&gt;1, "c"=&gt;3, "e"=&gt;5);</literal> とな
+     り、<varname>$even_arr</varname> は
+     <literal>array (6, 8, 10, 12);</literal>となります。
+    </para>
+    <para>
+     <function>array_map</function>,
+     <function>array_reduce</function>も参照下さい。
+    </para>
+   </refsect1>
+  </refentry>
+
   <refentry id="function.array-flip">
    <refnamediv>
     <refname>array_flip</refname>
@@ -233,6 +385,50 @@
     </para>
    </refsect1>
   </refentry>
+
+  <refentry id="function.array-fill">
+   <refnamediv>
+    <refname>array_fill</refname>
+    <refpurpose>配列を指定した値で埋める</refpurpose>
+   </refnamediv>
+   <refsect1>
+    <title>説明</title>
+    <funcsynopsis>
+     <funcprototype>
+      <funcdef>array <function>array_fill</function></funcdef>
+      <paramdef>int <parameter>start_index</parameter></paramdef>
+      <paramdef>int <parameter>num</parameter></paramdef>
+      <paramdef>mixed <parameter>value</parameter></paramdef>
+     </funcprototype>
+    </funcsynopsis>
+    <para>
+     <function>array_fill</function> は、
+     パラメータ<parameter>value</parameter>を値とする
+     <parameter>num</parameter>個のエントリからなる配列を埋めます。
+     この際、キーは、<parameter>start_index</parameter>パラメータから
+     外します。
+    </para>
+    <para>
+     <example>
+      <title><function>array_fill</function> の例</title>
+      <programlisting role="php">
+$a = array_fill(5, 6, 'banana');
+
+/*
+$a now has the following entries:
+
+$a[5]  = "banana";
+$a[6]  = "banana";
+$a[7]  = "banana";
+$a[8]  = "banana";
+$a[9]  = "banana";
+$a[10] = "banana";
+*/
+      </programlisting>
+     </example>     
+    </para>
+   </refsect1>
+  </refentry>
   
   <refentry id="function.array-intersect">
    <refnamediv>
@@ -967,6 +1163,75 @@
    </refsect1>
   </refentry>
  
+  <refentry id="function.array-reduce">
+   <refnamediv>
+    <refname>array_reduce</refname>
+    <refpurpose>
+     
+コールバックを用いて配列を普通の値に変更することにより、配列を再
+     帰的に減らします。
+    </refpurpose>
+   </refnamediv>
+   <refsect1>
+    <title>説明</title>
+    <funcsynopsis>
+     <funcprototype>
+      <funcdef>mixed <function>array_reduce</function></funcdef>
+      <paramdef>array <parameter>input</parameter></paramdef>
+      <paramdef>mixed <parameter>callback</parameter></paramdef>
+      <paramdef>int
+       <parameter><optional>initial</optional></parameter>
+      </paramdef>
+     </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.
+    </para>
+    <para>
+     <example>
+      <title><function>array_reduce</function> example</title>
+      <programlisting role="php">
+function rsum($v, $w) {
+    $v += $w;
+    return $v;
+}
+
+function rmul($v, $w) {
+    $v *= $w;
+    return $v;
+}
+
+$a = array(1, 2, 3, 4, 5);
+$x = array();
+$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>.
+    </para>
+    <para>
+     See also <function>array_filter</function>,
+     <function>array_map</function>.
+    </para>
+   </refsect1>
+  </refentry>
+
+
+  <parameter>num</parameter> entries of the value of the 
+  <parameter>value</parameter> parameter, keys starting at the 
+  <parameter>start_index</parameter> parameter.
+ </para>
+
   <refentry id="function.array-shift">
    <refnamediv>
     <refname>array_shift</refname>

Index: phpdoc/ja/functions/overload.xml
+++ phpdoc/ja/functions/overload.xml
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision: 1.1 $ -->
 <reference id="ref.overload">
  
<title>オブジェクトプロパティとメソッドコールのオーバーロード</title>
  <titleabbrev>オブジェクトのオーバーロード</titleabbrev>

  <partintro id="overload.partintro">
   &warn.experimental;
   <para>
    
この拡張モジュールの用途は、オブジェクトのプロパティへのアクセスと
    
メソッドのコールのオーバーロードを可能にすることです。この拡張モ
    ジュールで定義されている関数は1つだけです。この関数、
    <function>overload</function> 
はこの機能を有効にするクラスの名前を
    
引数とします。名前を指定されたクラスでこの機能を使用したい場合は以
    下の適当なメソッドを定義する必要があります。これらは、
    <literal>__get()</literal>,<literal>__set()</literal>,
    
<literal>__call()</literal>で、それぞれ、プロパティを取得、設定、
    
メソッドをコールするためのものです。オーバーロード機能は選択可能で
    
す。これらのハンドラ関数の中でオーバーロードは無効とすることができ、
    
この場合、オブジェクトのプロパティに普通にアクセスできます。
   </para>
   <para>
    
<function>overload</function>関数の簡単な使用例をいくつか示します。
    <example>
     <title>PHPクラスのオーバーロード</title>
     <programlisting role="php">
<![CDATA[
<?php

class OO
{
    var $a = 111;
    var $elem = array('b' => 9, 'c' => 42);

    // プロパティを取得するためのコールバックメソッド
    function __get($prop_name, &$prop_value)
    {
        if (isset($this->elem[$prop_name])) {
            $prop_value = $this->elem[$prop_name];
            return true;
        } else {
            return false;
        }
    }

    // プロパティを設定するためのコールバックメソッド
    function __set($prop_name, $prop_value)
    {
        $this->elem[$prop_name] = $prop_value;
        return true;
    }
}

// OOオブジェクトをオーバーロードする
overload('OO');

$o = new OO;
print "\$o->a: $o->a\n"; // 出力: $o->a:
print "\$o->b: $o->b\n"; // 出力: $o->b: 9
print "\$o->c: $o->c\n"; // 出力: $o->c: 42
print "\$o->d: $o->d\n"; // 出力: $o->d:

// OOの$elem排列に新規アイテムを追加
$o->x = 56; 

// (PHP 4に組み込まれている)stdclassのインスタンスを生成
// $val はオーバーロードされていません!
$val = new stdclass;
$val->prop = 555;

// $valオブジェクトを有する配列として"a"を設定
// しかし、__set() はこれを$elem配列に代入する
$o->a = array($val);
var_dump($o->a[0]->prop);

?>
]]>
     </programlisting>
    </example>
   </para>
   <warning>
    <para>
     
この拡張モジュールは実験的なステータスにあり、全ての機能が動作す
     
るわけではありません。現在、<literal>__call()</literal>はサポート
     
されておらず、プロパティの取得または設定操作のオーバーロードだけ
     
が可能です。クラスの元のオーバーロードハンドラを削除することはで
     
きません。また、<literal>__set()</literal>はプロパティの一段階に
     アクセス場合にのみ動作します。
    </para>
   </warning>
  </partintro>

  <refentry id="function.overload">
   <refnamediv>
    <refname>overload</refname>
    <refpurpose>
     
クラスのプロパティおよびメソッドに関してオーバーロードを可能にする
    </refpurpose>
   </refnamediv>
   <refsect1>
    <title>説明</title>
    <funcsynopsis>
     <funcprototype>
      <funcdef>void
       <function>overload</function>
      </funcdef>
      <paramdef>string 
       <parameter>
        <optional>class_name</optional>
       </parameter>
      </paramdef>
     </funcprototype>
    </funcsynopsis>
    <para>
     <function>overload</function> 関数は、
     <parameter>class_name</parameter>で指定されたクラスのプロパティと
     メソッドコールをオーバーロードします。
     <link linkend="overload.partintro">このパートの導入部</link>にあ
     る例題を参照下さい。
    </para>
   </refsect1>
  </refentry>
 </reference>

<!-- 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
sgml-parent-document:nil
sgml-default-dtd-file:"../../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
-->

Reply via email to