おすすめ本

最近のトラックバック

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

AccRanking

Ad

2018年8月14日 (火)

【PHP】「stdClass」を関数の引数としての使い方について

以前 stdClass の使い方を以下の記事に記しましたが、今回はそれを関数の引数に使おうと思います。

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

stdClass を引数にする場合には、どの様なプロパティを設定するのかは、前もって関数の呼び出し側と、関数内の処理を決めておく必要があります。
但し、引数が非常に多くなる場合には stdClass で渡すことですっきりした関数呼び出しにはなると思います。

以下のソースは stdClass を生成し3個のプロパティへを設定し、その内容を表示する簡単な例です。


3個のプロパティ値が表示されることが確認できます。

さらにもう一つの関数を宣言します。 この関数は、同じ引数を持つのですが各プロパティを再設定する様にしています。


これを実行すると以下の様な結果になります。

関数の引数としてクラスを渡すと、参照渡しで行われる様です。 参照渡しのため、クラスプロパティの値を書き換えることが出来ますので、注意が必要です。

また、 stdClass にプロパティが存在するかどうかをチェックし、処理を分けることも可能です。 上のソースに4番目のプロパティの存在有無で処理を分ける様にする処理を付加したものを以下に示します。


これを実行すると以下の様な結果になります。


楽天市場

デル株式会社

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

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

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


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

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


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

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



楽天市場


■関連記事
【PHP】可変変数と可変クラスの使い方について
【PHP】配列の中に参照変数を持つことで別々の変数の要素を操作する
【PHP】配列の代入はクローンコピーになる
【PHP】連想配列の様な「stdClass」の使い方について
【PHP】POSTやGETなどのスーパーグローバル変数のアクセスはfilter_inputを使う方が安全らしい
【PHP】array_keys:指定キー検索で見つからない場合の結果は何が返る

デル株式会社

2018年8月13日 (月)

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

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

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


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

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


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

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



楽天市場

■関連記事
【PHP】可変変数と可変クラスの使い方について
【PHP】配列の中に参照変数を持つことで別々の変数の要素を操作する
【PHP】配列の代入はクローンコピーになる
【PHP】連想配列の様な「stdClass」の使い方について
【PHP】POSTやGETなどのスーパーグローバル変数のアクセスはfilter_inputを使う方が安全らしい
【PHP】array_keys:指定キー検索で見つからない場合の結果は何が返る
デル株式会社

2018年5月31日 (木)

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

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

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

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

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

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

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

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


楽天市場

■関連記事
【PHP】可変変数と可変クラスの使い方について
【PHP】配列の中に参照変数を持つことで別々の変数の要素を操作する
【PHP】配列の代入はクローンコピーになる
【PHP】連想配列の様な「stdClass」の使い方について
【PHP】POSTやGETなどのスーパーグローバル変数のアクセスはfilter_inputを使う方が安全らしい
【PHP】array_keys:指定キー検索で見つからない場合の結果は何が返る

デル株式会社

2018年5月16日 (水)

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

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

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

楽天市場

■関連記事
Oracleファンクションのソースを表示する方法について・覚え書き
Oracleでのログインエラーでアカウントがロックされた場合の、強制ログインを使った対処方法
OracleでのPostgreSQLの「generate_series」(連続値の生成関数)的な使い方(LEVEL疑似列)
ORA-28002: the password will expire within 7 days がログイン時に発生
ORA-28001 the password has expired でユーザに接続不可