Dreamweaver TechniqueJAVA Script サンプル | CSS sample | JAVA Applet sample | Flash Sample
HTML4.0 reference | DynamicHTMLXHTML | XML sample | XSLT sample | RIKO's ASP Trial
ASP ADO リファレンス | PHP関数リファレンス | MySQL関数リファレンス

ユーザ関数を使って複数の配列を操作する

■ ユーザ関数を使って複数の配列を操作する

array_ map関数は、引数に指定した入れ打つのすべての要素に対してユーザが定義したコールバック関数を適用し、適用後のすべての要素を含む配列を返しますので、要素の内容を加工したい場合などに便利です。
引数には複数の配列を指定することができますので、複数の配列の内容をいっぺんに加工したり複数の配列を一つの多次元配列にしたりするというような使い方もできます。ただし、引数に複数の配列を指定する場合は、各配列の要素数が同一でなければなりません。

配列 = array_map ( 関数名,
              配列1,
              [配列2・・・・・・・])

「関数名」には、基本的に定義したコールバック関数の名前を指定しますが、「NULL」を指定することもできます。「関数名」の部分に「NULL」を指定すると、次のように複数の配列を一つの多次元配列として返します。

function 関数名 (引数)
{
// 要素をh食う出する条件を示すコード

// $c[1][1] = "b"
// $c[2][1] = 3
// $c[2][2] = "c"      となる。

コールバック関数は、以下のような形式で定義する必要があります。

function 関数名(引数, [引数.....]
{
// 要素を操作するコード
return  操作後の値
}

コールバック関数には、配列の要素を操作するためのコードを記述し、最後にreturn文で操作後の値を返すようにします 。
コールバック関数の引数の数は、array_map関数の引数に指定した配列の数とあわせる必要があります。
例えば、array_map関数の引数として二つの配列を指定した場合はコールバック関数も二つの引数をとるようにします。
なお、PHP5ではコールバック関数の変わりにメソッドを指定することもできます。その場合は、「関数名」を指定する変わりに「array(クラス名, メソッド名)」という形の配列を指定します。(array_filete関数やarray_reduce関数、array_walk関数などでも同様にしてメソッドを指定することができます)。

配列 = array_map
         (array (クラス名, メソッド名),
         配列1,
         [配列2, ・・・・・・・・・・]

 

<?php
   // コールバック関数
   // 「$x」は配列「$a」の要素の値を受け取る

   function map($x, $y)
   {
   return array(number_format($x),
      number_format($y),
      number_format($x * $y));
   }

   $a = array(980, 1980, 480); // 単価
   $b = array(90, 70, 1200); // 個数
   $c = array_map("map", $a, $b);

   // header("Content-Type: text/plain; charset=EUC-JP");
   echo "単価を格納した配列\n";
   foreach ($a as $value)
   {
      echo $value . "\n";
   }
   echo "\n";

   echo "個数を格納した配列\n";
   foreach ($b as $value)
   {
      echo $value . "\n";
   }
   echo "\n";

   echo "単価と個数から総額を計算\n";
   foreach ($c as $value)
   {
      printf("%5s円 x %5s個 = %7s円\n", $value[0], $value[1], $value[2]);
   }
?>

<戻る

R HOUSE | RIKO's Trial Page | Shirley's Pettit Case | Shirley's i-box | Shirley's little box

Gポイントポイ活 Amazon Yahoo 楽天

無料ホームページ 楽天モバイル[UNLIMITが今なら1円] 海外格安航空券 海外旅行保険が無料!