最近のトラックバック

  • event (夢茶爺&苦茶爺のPC奮戦備忘録)

カウンタ

おすすめ本

AccRanking

2018年8月14日 (火)

【PHP】可変変数と可変クラスの使い方について

PHPでは変数に関数名を設定し、その変数の後に括弧(())を付けることで、変数に設定された関数を実行します。 これは、似た様な関数を作成した時に、何かの条件で関数の実行振り分ける時に使えるかと思います。

以下の例では、2個の関数を宣言し、関数名の配列を宣言し、繰り返し処理でそれぞれの関数を実行しています。


結果は以下の表示になります。

それぞれの関数が実行されたことが分かります。


可変関数の方法をクラスにも適用できます。 可変関数の様に別名のクラスを用意し、同じメソッドを持たせてみます。

この結果は以下の様に、クラスが順次生成され、「hello」メソッドが呼び出されることが分かります。


楽天市場

デル株式会社

2018年8月13日 (月)

【PHP】配列の中に参照変数を持つことで別々の変数の要素を操作する

PHPでのプログラムでは変数の参照を扱う場合には、変数の先頭に & を付けます。 配列の要素を操作する場合には以下の様に、配列の中身を受ける変数の先頭に & を付けて処理します。

以下の例では、数値配列を設定し、配列内の要素の値を10倍しています。


結果は以下の表示になります。

配列の全ての要素が10倍されていることが分かります。


ここで、別々の変数の参照を配列に持ち処理する方法を示します。

この結果は以下の様に、3個の変数の値がそれぞれ10倍されたことが分かります。


デル株式会社

2018年5月31日 (木)

【PHP】配列の代入はクローンコピーになる

最近、PHPでのプログラムを組む上で、配列の代入の動作がどうだったか少し心配になったので調べてみました。

配列の代入は、代入元の配列の内容そのものが全てコピーされます。他の言語では代入元のクローンを作成し、 代入先の配列に設定する感じです。

以下のソースは代入を行う簡単な例です。

結果は以下の表示になります。

コピー先の配列の内容が、コピー元の内容と異なっていることが分かります。

但し、代入の所で「&」を使用すると、内容がコピーされるのではなく、参照がコピーされます。

この結果は以下の様に、2個の配列の内容が同じになります。



デル株式会社

2018年5月16日 (水)

Oracleファンクションのソースを表示する方法について・覚え書き

ユーザが作成したOracleファンクションのソースを表示する方法ですが、最近使ったので覚え書きとして記します。

SQL-Plus での実行ですが以下の様にします。
NAME='XXXXXXXXX' の XXXXXXXXX に表示させたいファンクション名にします。
pagesize を0にすることでファンクションのソースを区切りなく表示できます。

2018年4月19日 (木)

【PHP】連想配列の様な「stdClass」の使い方について

最近他の人が作ったプログラムの改修作業が在ったのですが、その中で stdClass を使っていて 私は使ったことが無かったので少し調べてみたところ、連想配列の様な使い方ができることを知りました。

クラスを使う場合、普通は別のクラス宣言でクラス名を付けますが stdClass は無名クラスとして クラスオブジェクトを生成する様です。

以下のソースは stdClass を生成し2個のプロパティへの代入を行う簡単な例です。
stdClass で生成されたオブジェクトに対して、プロパティを指定する時点で、 内部的にそのプロパティが生成されるようです。

結果は以下の表示になります。

2個のプロパティに値が設定されていることが確認できます。
尚、このソースに stdVal3 というプロパティを参照する様にしてみます。

この結果は以下の様に、Notice エラーが発生します。
代入設定されていないプロパティを参照することはできない様です。


この stdClass ですが配列に変換することができます。 以下のソースでは stdClass オブジェクトを array オブジェクトに代入し変換しています。

上のソースから stdClass は連想配列的であることが分かります。
尚、 stdVal1 とソース上固定の記述のみしか扱えないわけでは無く、 次の例では stdVal1 の参照を変数を用いて行う方法を示します。

オブジェクトのプロパティを変数で扱えると応用がいろいろ利くと思います。

デル株式会社