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"=>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> + <para> + この例により、<varname>$odd_arr</varname> は + <literal>array ("a"=>1, "c"=>3, "e"=>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 -->