最近のトラックバック

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

カウンタ

おすすめ本

AccRanking

カテゴリ「PHP」の22件の記事 Feed

2018年11月 2日 (金)

【PHP】QRバーコードの生成の方法について

PHPでのQRバーコードの生成方法ですが、以下のサイトにフリーソフトが公開されていますのでこれを使ってみます。

QRcode Perl CGI & PHP scripts ver. 0.50

ページの下の方の「qr_img0.50j.tar.gz (1007KB)」をダウンロードします。

ダウンロードしたファイルを展開し「qr_img0.50j」フォルダができますので、 PHPプログラムのあるディレクトリに全てをコピーします。

このプログラムの使い方は「qr_img0.50j/README.txt」に詳しく書かれていますが、 プログラムの出力が画像データそのものなので、HTMLのIMGタグのURLとして指定すれば ブラウザでQRコードが表示されます。

HTMLのソースは以下の様になります。

Qruploadimg1


PHPのプログラムで使う場合は以下の様なソースになります。

ここで注意するのは「qr_img.php」を呼出す場合は、URLをサイトの先頭から記述することです。
楽天市場

デル株式会社

2018年8月14日 (火)

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

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

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


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

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


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

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


楽天市場

デル株式会社

2018年8月13日 (月)

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

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

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


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

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


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

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


デル株式会社

2018年5月31日 (木)

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

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

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

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

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

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

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

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



デル株式会社

2018年4月19日 (木)

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

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

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

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

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

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

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


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

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

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

デル株式会社

2018年4月18日 (水)

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

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

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

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

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

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

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

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

デル株式会社

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指定値が返されます。

デル株式会社

2018年4月11日 (水)

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

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

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

プログラムの例としては以下の通りです。
デル株式会社

2018年4月 5日 (木)

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

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

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

PHPプログラムは以下の通りです。 いろんなサイトを見ると、 出力ヘッダのタイプは application/force-download でOKな様です。
ファイル出力は readfile() で行います。
デル株式会社

2018年3月20日 (火)

【PHP】array_keys:指定キー検索で見つからない場合の結果は何が返る

今回はPHPのプログラムを組んでいて、 関数array_keysを利用して配列のキーの中に、指定されたキーの存在チェックを行う為に 使っていたのですが、指定されたキーが無かった場合はどうなるのかなと思い、調べてみました。

PHPの公式のマニアルには以下の様な例が載っています。 これを実行すると以下の様になります。 確かにこれで例としては問題無いのですが、結果としてキー値が返るものしか載っていません。 まあ、該当しないキー値を指定した場合は自分で調べればいいのですが。 そこで、2番目の例で、キーが存在しない yellow でやってみました。 この結果は、以下の様になります。 結果としては、空のarrayが返ります。 この結果に対して、count()を取ってやれば、0となります。 また、foreachで処理しても結果の配列は空なので、以下の様に処理されないことになります。 PHPのマニアルも空の配列の例が載っていると助かるのですが・・・

転職を本気で考えている方向けのプログラミングスクール!【WebCampPRO】