おすすめ本

最近のトラックバック

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

AccRanking

Ad

« 2018年3月 | メイン | 2018年5月 »

2018年4月

2018年4月19日 (木)

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

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

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

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

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

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

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


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

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

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

楽天市場

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

デル株式会社

2018年4月18日 (水)

【PHP】関数の戻り値を複数にする方法(list関数)

他の言語では難しいのですが、PHPでは関数の戻り値を配列(array)で行い、 結果をlist関数で受けることにより複数の戻り値の様になります。

先ずは、list関数についてみてみます。 以下のソースを見て下さい。

結果は、変数 $d1, $d2, $d3 に配列のそれぞれの値が順番に入るので以下の表示になります。

これを参考にして関数の戻り値を複数にしてみます。

関数の戻り値を list関数で受けることで、3個の変数にばらすことができます。
(この結果の表示は先ほどのものと同様です。)
そこで、関数を少し複雑にして、戻り値を1個の数値データと、配列データを戻してみます。

関数の中身は、配列データを入れ子にして戻り値にしています。配列の中身がさらに配列でも入れられるのでこの様なことができます。

データベースから一連のデータを取得する場合に、データ件数とそのレコードデータを返す場合に使えると思います。
上のソースの結果は以下の様になります。

楽天市場

■関連記事
【PHP】「select」タグが入力不可でも値をPOSTするには「option」タグを「disabled」に設定する
【PHP】「stdClass」は「foreach」での処理ができる
【PHP】「stdClass」を関数の引数としての使い方について
【PHP】関数の引数に複数のデフォルト値を設定した場合の注意点について
【PHP】関数の戻り値を複数にする方法(list関数)
デル株式会社

2018年4月17日 (火)

【PHP】POSTやGETなどのスーパーグローバル変数のアクセスはfilter_inputを使う方が安全らしい

POSTやGETなどのスーパーグローバル変数へのアクセスは直接以下の様にすることで行えます。
この例では、$_GET変数から id という引数を取得します。

これを filter_input 関数を使うと1行ですっきりします。

但し、これだと引数 id が全く指定されない場合は、変数 $id の中身がNULLになってしまいます。 そこで filter_input 関数の第3引数に FILTER_SANITIZE_STRING を指定すれば id を文字列として 取得できます。

引数 id を整数値として扱いたい場合は、第3引数に FILTER_VALIDATE_INT を指定します。

この場合でも、id=aaa の文字列指定であったり、id= の様に未指定であったりすると 変数 $idfalse で返されます。
これでは不都合があったりしますので、値の規定値、最小値、最大値の指定を filter_input 関数の第4引数に配列で指定します。

指定された min_range指定値と max_range指定値の範囲外の場合は default指定値が返されます。

楽天市場


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

デル株式会社

2018年4月11日 (水)

【PHP】ブラウザに長時間処理の内容を順次表示を行う方法

PHPでの長い処理の中で単にブラウザに表示する場合、以下の様な手順で行います。

まず最初にブラウザに対する出力用バッファを最初にフラッシュをします。
その後、長時間の処理のループで echo 関数で文字列を表示した時に その都度バッファのフラッシュを行います。

プログラムの例としては以下の通りです。

楽天市場


■関連記事
【PHP】HTMLのリンクにダウンロード処理を設定する方法
【PHP】ブラウザに長時間処理の内容を順次表示を行う方法
【PHP】QRバーコードの生成の方法について
【PHP】画像BMPファイルの変換で「imagecreatefromwbmp」が動作しない
【PHP】Parse error: syntax error, unexpected 'private' エラーが出る時
【PHP】「Parse error: syntax error, unexpected …」の行番号にエラーが無い場合

デル株式会社

2018年4月 5日 (木)

【PHP】HTMLのリンクにダウンロード処理を設定する方法

HTMLの a タグのリンク先にPHPプログラムを指定してファイルをダウンロードする方法ですが、 リンクファイルの引数を GET 指定する様にします。

HTMLのソースは以下の様にします。 リンクファイルの引数を file として、その値にファイル名を直接指定しています。
呼出すPHPプログラムは download.php とします。

PHPプログラムは以下の通りです。 いろんなサイトを見ると、 出力ヘッダのタイプは application/force-download でOKな様です。
ファイル出力は readfile() で行います。
デル株式会社
■関連記事
【PHP】HTMLのリンクにダウンロード処理を設定する方法
【PHP】ブラウザに長時間処理の内容を順次表示を行う方法
【PHP】QRバーコードの生成の方法について
【PHP】画像BMPファイルの変換で「imagecreatefromwbmp」が動作しない
【PHP】Parse error: syntax error, unexpected 'private' エラーが出る時
【PHP】「Parse error: syntax error, unexpected …」の行番号にエラーが無い場合

2018年4月 4日 (水)

【Javascript】:IEではデフォルト値を持った関数では動作しない

Javascriptで作成した関数でデフォルト値を持つものを作成してデバッグしていました。 関数の例として以下の様な感じです。


この関数を「a」タグのクリックイベントでコールしたりしていたのですが、 FireFoxChrome では問題無く動くのですが、 IEでは全く動作しません。

どうも、IEではデフォルト指定ができない様です。

以下の様にして、引数が宣言されているかを確認するしかない様です。


楽天市場

デル株式会社