Author Archives: redcocker

EZ zenback バージョン1.5.2 リリース

「EZ zenback バージョン1.5.2」をリリースした。 最新の「EZ zenback」をダウンロードする このバージョンから新しい書式のzenbackタグをサポートした。 「EZ zenback」は任意のコード(JavaScript等)をWordPressが生成するHTMLソースに追加して書き出す機能があるが、ユーザーがネットで公開されているコードを盲目的に入力し、そのコードが悪意のあるものであれば最悪の結果を招く恐れがあるため、簡単なセキュリティチェックを行っている。 そのチェックが機能が新しいzenbackタグを拒絶してしまっていた。

Posted in PHP, WordPress, 自作アプリ | Tagged , , | Leave a comment

Disqus Comment System for EZ zenback Ver. 2.74 modified 1.0 リリース

「Disqus Comment System for EZ zenback Ver. 2.74 modified 1.0」を公開した。 最新の「Disqus Comment System for EZ zenback」をダウンロード 「Disqus Comment System for EZ zenback Ver. 2.74 modified 1.0」は、「EZ zenback」との併用が前提となっているので、これ単体では使用しないこと。

Posted in WordPress, ネット・PC, 自作アプリ | Tagged , , , | Leave a comment

Disqus Comment System for EZ zenback Ver. 2.73 modified 1.1 リリース

「Disqus Comment System for EZ zenback Ver. 2.73 modified 1.1」を公開した。 最新の「Disqus Comment System for EZ zenback」をダウンロード 実は、前日にリリースした「Disqus Comment System for EZ zenback Ver. 2.73 modified 1.0」の公開作業でミスをしてしまい、「Disqus Comment System 2.73」そのものをアップロードしていまっていたようだ。 ご迷惑をお掛けしました。 「Disqus Comment System for EZ zenback Ver. 2.73 modified 1.1」は、「EZ zenback」との併用が前提となっているので、これ単体では使用しないこと。

Posted in WordPress, ネット・PC, 自作アプリ | Tagged , , , | Leave a comment

Androidは使えるか?

最近、AndroidタブレットPCを手に入れた。 「FRONTIER FT701W」と言う7インチタブレットPCである。 OSは、Android 2.3.4を搭載している。 これが私にとって、初めてのタブレットPCであり、初めてのAndroid搭載マシンであるため、この記事には誤りを含んでいるかもしれないことを先に述べておく。 Androidとよく、比較されるAppleの「iOS」は、「Darwin」カーネルをベースとしたUnix系OSであり、携帯電話、タブレットをターゲットにしたOSであるのに対して、「Android」も、「Linux」カーネルをベースとしたUnix系OSであり、同様に携帯電話、タブレットをターゲットにしている。 その点では、両者は似ているとは言える。 しかし、「iOS」は、Apple製品にのみ搭載されるOSでり、現時点では、他社の製品に対して供給されていない。 対して、「Android」は、Apache v2ライセンスで配布されるオープンソースのOSであり、誰でも利用することが許されている。 また、Apache v2ライセンスは、GPLと異なり、コピーレフトなライセンスではない。 従って、Androidを改変した上で、また別のライセンス、つまりはフリーでないライセンスで配布しても構わない。 オープンソースのライセンスの中でも制限が多いGPLと異なり、商用利用しやすいライセンスと言える。 ただし、カーネルとライブラリは、GPLライセンスであるため、カーネルを改変し、再配布した場合は、GPLライセンスに従ってカーネルのソースコードの要求に応じる必要がある。 同様にブラウザで使われるレンダリングエンジン「WebKit」のラインセンスはLGPLとなっている。 「iOS」ではアプリケーションは、原則として「iTunes Store」で配布される。 専用のクライアント「iTunes」を使って、PCからダウンロードしても良いし、iPhone/iPad上の「App Store」などを使っても良い。 Andoridでも「iTunes」に相当する「Google Play(旧Android Market)」というサイトが存在する。 しかし、「iTunes」のようなクライアントアプリが提供されているわけではなく、ウェブサイトへ直接アクセスしてアプリのダウンロードを行うか、Android端末上の「Play ストア」を使って直接ダウンロードすることになる。 「iTunes」が、そうであるように「Google Play」のサイトにアクセスし、アプリをダウンロードすれば、Android端末に自動的にインストールされるようになっている。 「Google Paly」の使い勝手は悪くない。 しかも、注文後 15 分以内であれば、端末側で注文をキャンセルできる。 しかし、「iTunes」ように細かな操作や同期をAndroid端末に対して行うことは出来ない。 些細な事にみえるが、これは、両者の大きな思想の違いと言える。 「iOSが」PCと接続して使うことを想定しているの対して、「Android」は、(接続できないという意味ではなく、PCがあれば更に便利であるが)これを想定しておらず、不自由なく単体での利用が可能である。 「iOS」は、かつての「Palm OS」、一方、「Android」は、かつての「ザウルス」と言える。 個人的には、「Palm OS」が好きであり、「iOS」に軍配を上げたいところであるが、アプリの管理に関して「Android」も洗練されたものになっている。 「iOS」において「iTunes Store」は絶対的なものであり、野良アプリは脱獄を目的としてものが多いが、「Android」にとっての「Google Play」は、ただの公式アプリマーケットでしかなく、非公式のマーケットが乱立している。 そもそも、全てのAndroid端末に「Play ストア」がインストールされているとは限らないと言う事実がある。 「Play ストア」は、後でインストールすれば良いといった種類のものではないので、無ければ、その先ずっと「Play ストア」でアプリをダウンロードできない「Google Play」未対応端末ということになる。 所謂、「中華タブレット」と呼ばれる並行輸入品は、その傾向が強い。 更に加えて、「Google Play」のウェブサイトにアクセスしてダウンロードすることも出来ない。 これは、タブレット上の「Play ストア」で登録しているGoogleアカウントでなければ、ウェブサイトからもアプリをダウンロード出来ない仕組みになっているからだ。 実際、私の購入した「FT701W」には「Play ストア」はインストールされておらず、代わりに「Tapnow Market」という非公式マーケットに対応したアプリがプリインストールされていた。 現時点では「Tapnow Market」には「Google Play」のように豊富にアプリが登録されているわけではないので、「Google Play」の代わりにもならない。 「Play ストア」がインストールされていないモデルが存在するのは何故かと言う疑問があるが、これは「Play ストア」のライセンスのせいではないかと考えている。 「Play ストア」、「GoogleMap」、「Gmail」などのアプリは、「Android」とはライセンスが異なり、フリーウェアではないため、カスタマイズした「Android」に無許可でバンドルすることが出来ない。 ただし、「CyanogenMod」との係争の結果を見ると「Android」Google提供の「Android」から、これらを引っこ抜いてインストールするのは構わないようである。 「Android」には、多くのアプリケーションの存在し、豊富なアプリケーションによって、その人気を支えている。 そして、「Android」用のアプリケーションは、誰でも作成する事ができ、作成したアプリを「Google Play」で公開することも出来る。 しかし、「Google Play」へのアプリの登録は、「iTunes Store」への登録に比べて容易であり、悪意のあるソフトウェアが公開され易い傾向があると言われている。 悪意のあるソフトウェアに対するリスクは、非公式マーケットを利用した場合には、更に高まる。 私の「FT701W」の場合、「Tapnow Market」以外の非公式マーケットを利用する以外に有用なアプリを揃える手段がなかったが、念のためフリーでありながら商用アプリより検出率が高いと言われる「avast! Mobile Security」をインストールしたところ、2度、マルウェアを検出している。 やはり、アプリの入手元は、よく吟味したほうが良い。 無論、「Google Play」からダウンロードする場合も注意が必要である。 残念ながら「Android」の場合、「iOS」ほどは、安心してアプリをダウンロードできる環境は整っていないと言える。 「Android」では、管理者権限、つまりはrootとしてOSを使用できない仕様になっているが、変更を加えてroot権限を得るための「root化」と呼ばれる手法が流行っている。 「iOS」で言うところの「脱獄」に近いニュアンスである。 「root化」すると、ファイルシステム全体、つまりは全てのファイルにアクセスできるようになり、システムファイルの書き換えが可能になる。 Google自身は、この「root化」をユーザーの権利として認めている。 しかし、メーカー側はこれを認めないことが通常なので、root化した時点で保証を含めてメーカーサポートは受けられなくなる。 「FT701W」は、あまりにマーケットが貧弱であるんので、結局、root化した。 多くのユーザーがroot化したくなる気持ちがよく分かった。 root化するとシステム領域にもアクセスでき、ファイルの書き換えが可能になるので「Play ストア」を無理やりインストールしている。 アプリあってのタブレットであるから、やはり、「Play ストア」はないと困る。 「iOS」の場合は、製品がApple、1社からリリースされているので、製品に一貫性があるが、オープンソース故に、Androidの場合は、各社でカスタマイズされており、見た目も異なり、予めインストールされているアプリも異なっている。 単純に、同じAndroid OSのタブレットだから、初期状態で、全てが同じというわけではない。 以上のような理由で、「iOS」の方がユーザーに優しいと言えるかもしれない。 しかし、これは「Android」を否定しているわけでなく、むしろ「Android」に好意的な印象を持っている。 一貫性がない点についても「Android」端末は複数のメーカーから発売されており、多様であるとも言える。 「iOS」と「Android」、どちらが洗練されているか、どちらが使いやすいかと言った議論もあるが、個人的には、どちらも高いレベルで洗練されており、どちらも使いやすいと考えている。 高いレベルでの比較であるから、ある意味、このような議論は無意味である。 また、Androidタブレットを手にした時に「これならば自分でも作れるのではないか」と感じた。 実際、ハードは、中国を探せば、どこかのメーカーが作っているであろうし、それにAndroidを載せれば出来上がる。 こういったワクワク感は、残念ながら閉鎖的な「iOS」にはない。 PCがこれだけ普及した一因に、IBMがIBM PCの仕様をオープンにしたことが上げられるなら、「Android」の将来は、どのようなものになるだろうか?

Posted in Android | Tagged | Leave a comment

初心者による初心者のためのPHP講座 第9回 関数の定義

この講座でも、echo()を始めとして、date()、define()、array()、explode()、extract()などの様々な関数が登場している。(厳密には関数でないものも含まれるが・・・。) これらは、PHPが標準で備えている関数であり、構文と並んでPHPでのプログラミングの基本となる要素であるが、「ユーザー定義関数」として自身で関数を定義することも出来る。 関数については「初心者による初心者のためのPHP講座 第2回 PHPの基本構造」で触れているので、もう一度おさらいして欲しい。 ユーザー定義関数は、比較的小規模な処理を1つにまとめたもので、PHPのプログラムは、複数の「ユーザー定義関数」を組み合わせて実行させることで成立しているとも言える。 他の言語では、PHPの関数のような、ひとまとまりの処理を「サブルーチン」と呼ぶ場合もある。 ユーザー定義関数は、下記のようにfunction文を用いて定義する。 function 関数名() { 処理1; 処理2; 処理3; . . . } 関数は、1つまたは複数の引数を取ることもあるが、その場合は function 関数名(引数1, 引数2, 引数3…) { 処理1; 処理2; 処理3; . . . } となる。 関数名には、英数字、アンダースコアを使用することが出来るが、最初の一文字は、アルファベットかアンダースコアでなければならない。 戻り値を参照渡しする場合に、「&」で始まる関数を定義することがあるが、厳密には「&」は変数名の一部ではなく、「&関数名」となっている。 ユーザー定義関数を実行する場合は、標準の関数を実行する場合と同様に 関数名(); または 関数名(引数1, 引数2, 引数3…); とすれば良い。 また、ユーザー定義関数の戻り値を別の関数の引数として用いることも出来る。 <?php echo my_string(); round(my_value(), 2); // my_string()とmy_value()はユーザー定義関数 ?> このあたりは、PHPの標準関数と同じである。 下記の例では、get_date_yesterday()という関数を定義しているが、これは昨日が何曜日だったかを求め、それを戻り値として返す関数である。 <?php echo get_date_yesterday(); function get_date_yesterday() { $yesterday = time() + (60 * 60 * 9) – (60 * 60 * 24 * 1); // $yesterday = time() + (60秒 * 60分 * 9時間) – (60秒 * 60分 * 24時間 * 1日); $date_yesterday = date('l', $yesterday); return $date_yesterday; } ?> time()関数は、現在の時刻が、1970年1月1日0時0分から何秒経過したか求める関数であるが、 GMT基準であるため、日本時間に修正した上で、1日分の秒数を引いている。 こうして補正した秒数をdate()関数で整形し、曜日を求めている。 最後にreturn()を使って、戻り値として変数$date_yesterdayの値を返している。 return()は、処理を中断し、その引数を戻り値として返すが、echo()などと同様に厳密には関数ではないため、通常は、()は使わずに return 引数(戻り値となる値、変数); のように記述する。 戻り値として値を返さず、echo()関数で表示することが前提なら <?php get_date_yesterday(); function … 続きを読む →

Posted in PHP, PHP講座, ネット・PC | Tagged | 2 Comments

Plugin Directoryの統計情報を記事で表示出来るようにするプラグイン「Plugin Directory Stats」

「WordPress.ORG」の「Plugin Directory」から統計情報を取得し、投稿、固定ページ、ウェイジェットの中で表示できるようにするプラグイン「Plugin Directory Stats」をリリースした。 最新の「Plugin Directory Stats」をダウンロード 「Plugin Directory Stats」は、「Plugin Directory」からダウンロード数などの統計情報を取得し、ショートコードを使ってそれらを投稿、固定ページ、ウェイジェットの中で表示させることができる。 統計情報の取得にAPIと独自の仕組みを利用しているが、どちらもプラグインディレクトリのページをリクエストし、統計情報を取得する仕組みになっている。 つまりは、訪問者には見えない部分で、自サイトのページ以外にプラグインディレクトリのページを閲覧することになるため、サイトのパフォーマンスに少なからず影響を与える。 度が過ぎればWordPress.COMに対しても影響は皆無ではない。 そのため、原則として、プラグインの作者が、自身のプラグインの統計情報を自分のサイトで表示させる用途に向くプラグインである。 ただし、大量のプラグインの統計情報を表示させるような用途には向かない。 プラグインの利用者のサイト、WordPress.COMへの負荷を軽減するため、取得した情報は一定時間(デフォルトで3時間)キャッシュし、頻繁にページのリクエストを発生させない仕様になっている。 そのため表示される統計情報はリアルタイムの情報ではない。 キャッシュする時間を短くすることも出来るが、そもそも、リアルタイム性が重要な情報ではないので、可能な限り長めに設定して欲しい。 なお、統計情報は、プラグイン毎、作者者毎に独立してキャッシュされる仕組みであり、全情報が同時に更新されるとは限らない。 キャッシュの有効時間を過ぎた場合以外にもキャッシュが更新のタイミングがあり、UTCの午前0時(日本時間 午前9時)を過ぎ、日付が変わった後に、このプラグインのショートコードが記述されたページに訪問があった場合にもキャッシュが更新される。 以下は、このプラグインを使って統計情報の表示させた場合の例である。 ・特定のプラグインの統計情報 ・作者毎のプラグインリスト

Posted in WordPress, ネット・PC, 自作アプリ | Tagged , | Leave a comment

トラックバックスパム対策に適したWordPressプラグイン

先日、突然、トラックバックスパムが急増して、削除しても直ぐにトラックバックスパムを受信してしまうような状況に陥ってしまった。 コメントは「DISQUS」を使用しているので、「DISQUS」側でコメントスパム対策を行なっているが、トラックバック(ピンバック)に関しては対策を行なっていなかった事が原因だが、やはり事前に対策を講じておくべきだったと反省している。 コメントスパムやトラックバックスパム対策と言えば「Akismet」が定番であるが、対象がトラックバックに絞られるため、もっとシンプルなトラックバックスパムに特化したプラグインの方が好ましい。 また、私のケースでは、記事へのリンクが含まれないサイトからのトラックバックを禁止する機能があれば十分だろうと思われたので、そのようなプラグインを探して見ると「Simple Trackback Validation」というプラグインが見つかった。 ところが、残念なことに「Simple Trackback Validation」は、長らくアップデートされていないので、出来れば使用は避けたい。 更に調べると、派生として「Simple Trackback Validation with Topsy Blocker」というプラグインが存在することが分かったので、こちらを使うことにした。 「Simple Trackback Validation with Topsy Blocker」は、「Simple Trackback Validation」の基本機能に加えて、「topsy.com blocker」という外部サービスを利用できるようになっている。 実際のところ、基本機能に違いがあるかは分からないが、単にリリースが新しいという理由で「Simple Trackback Validation with Topsy Blocker」を選んだ。 「Simple Trackback Validation with Topsy Blocker」では、トラックバックスパムの受信を拒否する以外に、承認待ちとして保存したり、スパムとしてマークして保存することも出来る。 スパム判定に「topsy.com blocker」という外部サービスを利用している点が、このプラグインの特徴であるが、これに加えて、次のような条件でもスパム判定を行う。 まず、IPアドレスをチェックする機能があり、トラックバックの送信元IPアドレスと、トラックバック元のサイトのIPアドレスを比較し、一致しなければスパムと判定される。 つまり、ツールなどを使って、実際のサイト以外からトラックバックが送信されたケースがこれに該当する。 また、トラックバック元のサイトに投稿へのリンクが含まれなければ、スパムと判定する。 これらの判定条件は、設定画面でON/OFFでき、かつ細かな設定が出来るようになっている。 「Simple Trackback Validation with Topsy Blocker」は、シンプルなプラグインではあるが、トラックバックスパムに対抗するための機能は十分に備えており、実際、これでトラックバックスパムを完全に拒否することが出来た。

Posted in WordPress, ネット・PC | Tagged , , | Leave a comment

Plugin Directoryから削除されたプラグインを検知する

このサイトで使用しているプラグインは、未公開の自作品を除けば全て「WordPress.ORG」の「Plugin Directory」に登録されたものを使っている。 「Plugin Directory」に登録されたものであれば、ダッシュボードで更新通知を受信できるためアップデートが楽というメリットがあるが、実はもう1つの理由がある。 それは、「Plugin Directory」に登録されたものなら比較的安全だろうという考えに基づいている。 WordPress用のテーマやプラグインは、悪意を持って作ることも簡単である。 実際、そのようなテーマやプラグインは少なくない。 そのため、導入前のチェックが重要になる。 チェックを行うツールとして「Theme-Check」と「Plugin-Check」をインストールする手もあるが、これもメッセージの内容が理解できてこそ意味のあるツールなので、敷居は低いとは言えない。 個人的には「Plugin Directory」のプラグインが比較的安全だろうとは思っているが、登録されているプラグイン全てが安全かと言われればそうではなく、そもそも「Plugin Directory」への登録自体が簡単で、ソースコードを提出しなくとも許可される。 実際、登録申請フォーム「Add Your Plugin」を見ると、「Plugin URL」の項目が「required(必須)」になっていない。 過去に「Plugin Directory」でセキュリティ上の問題が発生したことがあり、そのタイミング登録申請したプラグインに対してソースコードの提出を求められたので、最近は面倒を避けるために、最初からソースコードも提出しているおり、現在、すべての申請に対してソースコードの提出が求められていないかは分からない。 しかし、現在もノーチェックで登録が許可されている可能性も高い。 そもそも、登録申請から許可されるまでの時間を考えると、ソースコードを提出した場合でも、殆どノーチェックではないかと思われる。 つまり、すべての登録プラグインが、ガイドライン「Detailed Plugin Guidelines」を守っているとは限らず、「Free Themes Directory」に比べると甘いと言える。 とは言え、「Plugin Directory」はユーザー自体が多いので、万が一、悪意のあるプラグインが登録された場合でも、ある程度の期間公開されれば、ユーザーによって問題が報告され「Plugin Directory」から削除される。 公開からある程度時間の経過しているプラグインは、より安全であるとは言えるだろう。 ただし、公開間もないプラグインが全て危険という意味ではないので誤解のないように。 また「Plugin Directory」から削除される理由としては、プラグインの作者の都合であるケースもあるため、削除されたからと言って危険なプラグインだったとは限らない。 私は、以前から「Plugin Directory」に一度登録された後に削除されたプラグインを簡単に調べる方法が欲しいと思っていた。 削除されたプラグインは問題があった可能性もあるので、それを知りたいと言う理由もあるが、それに加えて運用上の理由が大きい。 私の場合は、ダッシュボードでの更新通知に完全に頼っているので、更新通知によってプラグインをアップデートしている。 更新通知がない場合は、それが単にアップデートが無いだけなのか、「Plugin Directory」から削除されたためなのか知る手段がないので、単にアップデートがないと考えるしかなくなる。 その結果、作者の意思で「Plugin Directory」から登録を削除し、「Plugin Directory」以外の場所で公開されている場合でも、アップデートがないと思って、古いバージョンを使い続けることになるかもしれないからだ。 この問題に対処する1つの方法として、先日「No Longer in Directory」というプラグインを見つけた。 このプラグインは、「Plugin Directory」から削除されたプラグインのリストを保持している。 リストは、バージョン1.0でも8,000行以上もある。 ダッシュボードの「プラグイン」->「No Longer in Directory」にアクセスすると、インストールされたプラグインの中にリストにマッチするものないか調べ、マッチするものがあれば、更にそのプラグインのページが「Plugin Directory」に存在するかHTTP requestによって調べ、ページがなければ、今、現在も「Plugin Directory」から削除されたままであると判断し、警告を表示する仕様になっている。 この方法であれば、リストが間違っていたり、不幸な偶然でリスト致してしまわない限り「Plugin Directory」以外からダウンロードしたプラグインが誤検知されることはない。 大前提としてリストが正確で、今後も更新され続けることが重要であるが、この問題の解決の1つの手段にはなりそうだ。 あまりダウンロードされないと、作者も更新しなくなる可能性があるので、再度、「No Longer in Directory」を宣伝しておく。

Posted in WordPress, ネット・PC | Tagged , | Leave a comment

POST2PDF Converter バージョン0.4 リリース

WordPressの投稿や固定ページをPDF形式でダウンロード出来るようにするプラグイン「POST2PDF Converter バージョン0.4」をリリースした。 最新の「POST2PDF Converter」をダウンロード バージョン0.4では、作成されたPDFをキャッシュする機能を追加した。 過去のバージョンでは、ダウンロードリンクがクリックされる度に、PDFへの変換処理を行う仕様であったが、新しく追加されたキャッシュを有効にすることで、一度変換が行われた投稿に関しては変換を行わず、キャッシュからダウンロードされるようになり、サーバーの負荷が軽減されるようになった。 キャッシュの保持期間の設定は出来ず、無制限であるが、記事の内容が変更された場合は、更新後の最初ダウンロードのタイミングで個別にキャッシュは更新され、変更内容がPDFに反映される。 また、設定のリセットを含め、PDFの内容に影響を与える設定変更を行った場合や、キャッシュを無効にした場合には、すべてのキャッシュファイルがクリアされるようになっている。 記事とキャッシュの内容の不一致が起こらないように配慮しており、手動でキャッシュをクリアすることも出来るが、これは殆ど使う必要はないだろう。 記事とキャッシュの不一致が起こると考えられるケースは、直接、データベース上の記事データを変更した場合で、これをダッシュボード上から実行できるプラグインもあるが、通常の仕様の範囲では、まず、記事とキャッシュの不一致は発生しないと考えて良いだろう。 なお、ダッシュボードからプラグインの自動更新を行った場合も、キャッシュはクリアされてしまうため、これを避けたいならば、アップデートの際、手動で上書きインストールを行えば良い。 キャッシュは、「プラグインディレクトリ/post2pdf-converter/pdfs」に格納されている。

Posted in WordPress, ネット・PC, 自作アプリ | Tagged , , , | 5 Comments

初心者による初心者のためのPHP講座 第8回 ループ処理

PHPでは、同じ処理を繰り返し実行するための「ループ処理」を記述出来る。 ループ処理は、PHPでは、出番が多い構文であり、必ずマスターしておくこと。 while構文 while構文はシンプルなループを記述するための構文で、if文と似ている。 while (式) { 処理 } if文の場合は、式が真の場合に処理を実行するが、while文の場合は、式が真である限り、同じ処理を繰り返し実行する。 下記のサンプルは、$countが6未満であれば処理を繰り返す。 $countの初期値は1であり、処理が実行される度に1加算される。 <?php $count = 1; while ($count < 6) { echo $count; $count++; } ?> 従って、上記のサンプルを実行すると「12345」と表示される。 for構文 for構文は、while構文と比較すると複雑な構文で、繰り返しの条件を定義するために3つの式を必要とする。 for (式1; 式3; 式3) { 処理 } 式1は、whileを開始した時に1度だけ実行され、式2は、処理に実行を完了する度に実行される。そして、式3が真であれば処理が繰り返される。 複雑ではあるが、以下のように読み替えると理解しやすい。 for (初期値; 条件式; 増減) { 処理 } 式1で変数の初期値を定義し、式3で変数の増減を定義しておけば、式2の条件式で変数を評価することで意図した回数ループを繰り返すことが出来る。 <?php for ($count = 1; $count < 6; $count++) { echo $count; } ?> 上記のサンプルでは、$countの初期値が1で、処理の度に1増える。 そして、$countが6未満なら処理が繰り返されるため、実行すると「12345」と表示される。 次のサンプルでは、複数の変数の初期値と増減を記述している。 <?php for ($count = 1, $value = 5; $count < 6; $count++, $value–) { echo "\$count:".$count." \$value:".$value."<br />"; } ?> 複数の変数の初期値と増減を記述する場合は、それらをカンマで区切ること。 for構文は、次のように記述しても良い。 for (式1; 式2; 式3): 処理 endfor; do~while構文 while構文やfor構文が、まず条件式を評価した上で、条件式が真であれば処理を繰り返すのに対して、do~while構文は、まず処理を実行してから、条件式の評価が行われる。 つまり、条件を満たしているか否かに関係なく、少なくとも1回の処理が実行され、2回目以降は、条件式が真である場合のみ繰り返される。 do { 処理スクリプト } while(式); 条件評価と処理の順序が逆であるが、基本的にはwhile構文と似ている。 次にサンプルは、$valの初期値が既に条件を満たしていない。 <?php $val = -1; do { echo $val; } … 続きを読む →

Posted in PHP, PHP講座, ネット・PC | Tagged | 1 Comment