Rakuten

  • 楽天ダウンロード

    楽天市場

おすすめ本

天気予報

最近のトラックバック

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

カウンタ

VC

admax

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

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】

2018年3月16日 (金)

【PHP】画像BMPファイルの変換で「imagecreatefromwbmp」が動作しない

画像ファイルのアップロードでBMPファイルをJPGに変換する時に imagecreatefromwbmpを使ったがうまくいかない現象が発生しました。
以下の様なソースで、画像ファイルの種類としては「jpeg」「bmp」「png」「gif」を 対象としていたのですが、「bmp」用の関数「imagecreatefromwbmp」がうまく動作しませんでした。 何度やってもうまくいかないので、PHPの正式な関数の説明書を見ると 以下の関数の投稿が載っていました。
ダメもとで一度この関数で行うと取り敢えず処理がうまくいったのでこれでOKとしました。
転職を本気で考えている方向けのプログラミングスクール!【WebCampPRO】

2018年3月 9日 (金)

【PHP】Parse error: syntax error, unexpected 'private' エラーが出る時

今日は、またまた簡単なエラーの件で恐縮ですが、 以下のソースで、「L_test()」の宣言でタイトルのエラーが発生しました。

「処理A」「処理B」共に長い処理だったので、なかなか見つからなかったのですが、 よくよく見ると、「switch」文の閉じる括弧「}」がありません。
こんな簡単なところにバグが潜んでいました。
論理的には問題無い様な感じだったので、括弧「{}」の対応をチェックするのを怠っていました。 完全にケアレスミスでした。

「unexpected 'private'」などと表示されたので、てっきり他の部分を疑っていましたが、 もっとソースをよく見るべきでした。

タイトルの様なエラーが出たら、一度処理の括りの括弧「{}」の対応を確認してみては 如何でしょうか。

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

2018年2月27日 (火)

【PHP】「Parse error: syntax error, unexpected …」の行番号にエラーが無い場合

表示される行番号にはエラーが無く、他の部分にエラーが在る場合が多いです。

例えば、if文などの{(中括弧)の閉じ忘れなどがあります。

また、今回くだらないミスを起こしたのですが、変数名の先頭の【$】ドルマークを忘れたことです。
長い変数名を使用していて、他の所からのコピペでささっとソースを直したら 【$】ドルマークをつけるのを忘れていて、解決するまで30分も掛かってしまいました。

{(中括弧)の閉じ忘れを中心に見直していたのですが、人間正しいと思いこむと 簡単な変数の【$】ドルマークを忘れるものです。笑ってやってください。
皆さんもくれぐれも変数の先頭の【$】ドルマークを忘れませんように。

尚、エラーの部分を特定する方法としては、 エラーが起きている部分を含む大まかなところで、 【/**/】コメントにしてエラーが出ない様にしてから、 順次内側にコメント部分を狭めていき見つける様にしています。

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

2011年8月30日 (火)

PHPでエクセルファイル処理

今回はPHPでエクセルファイルの読み書きができるオープンソースの紹介をしたいと思います。

先ず、PHPExcelを以下のサイトの「Downloads」の「Recommended Download」より取得します。
最新のバージョンはPHPExcel 1.7.6の様です。

http://phpexcel.codeplex.com/

尚、動作条件としてはPHPのバージョンは5.2.0以上で、「zip」「xml」「gd」のPHP用ライブラリが必要の様です。 (zipはzipファイルの生成等が無ければいらない様です)


ダウンロードしたzipファイルを「htdocs/excel/」のディレクトリに展開しました。
展開したディレクトリは以下の様になります。

・htdocs/excel/Classes       :PHPExcelのライブラリ
・htdocs/excel/Documentation :PHPExcelのドキュメント
・htdocs/excel/Tests         :PHPExcelの各種サンプルソース

ドキュメントは英語ですが、一通りの説明がなされていて、一応使える感じでした。

私の環境ではlocalhostでのテストを行いましたので、
htdocs/test/test.phpとして以下のソースで簡単なエクセルファイルを出力するプログラムで確認しました。


ソースをみれば、結構簡単にエクセルが出力できています。
ファイルの出力形式は「Excel2007形式」「Excel95形式」「CSV」等があります。


尚、最後の書込のところを以下の様にすれば、ブラウザでのダウンロードができます。