【再質問】PHPについて下記のスクリプトを作成してください。


下記のスクリプトを実行するごとに、nの数値が一つずつ増やしてください。

$i = array(1,2,3,4,5);
echo $i[n];

最初にスクリプトを実行すると、「1」がechoされ、
次に実行したときは「2」がechoされるといった具合です。

Vista、XAMPPXAMPP 1.7.0、PHP5.2.8、Firefox3.0.7でやってます。
よろしくお願いします。

回答の条件
  • 1人2回まで
  • 登録:2009/03/17 19:02:50
  • 終了:2009/03/18 21:42:15

ベストアンサー

id:jeanjean No.1

jeanjean回答回数64ベストアンサー獲得回数32009/03/17 21:58:29

ポイント53pt

スクリプトを過去に何度実行したか、を覚えておかないとプログラムは今何回目の実行かが判断できないので、

プログラムの実行回数をクッキーに「visitcount」として記録しておけば下記のような形で実現できると思います。


<?
// ----- クッキー処理開始 --------
if( isset($_COOKIE['visitcount']) ){ //クッキーが存在する場合
  $n = $_COOKIE['visitcount'];
} else{ //クッキーが無い場合
  $n = -1;
}
$n++; // カウント値+1
setcookie('visitcount', $n);
// ----- クッキー処理終了 --------

$i = array(1,2,3,4,5);
echo $i[n];
?>
id:taroemon

ご回答ありがとうございます。

大変参考になりました。

2009/03/18 21:42:05

その他の回答(1件)

id:jeanjean No.1

jeanjean回答回数64ベストアンサー獲得回数32009/03/17 21:58:29ここでベストアンサー

ポイント53pt

スクリプトを過去に何度実行したか、を覚えておかないとプログラムは今何回目の実行かが判断できないので、

プログラムの実行回数をクッキーに「visitcount」として記録しておけば下記のような形で実現できると思います。


<?
// ----- クッキー処理開始 --------
if( isset($_COOKIE['visitcount']) ){ //クッキーが存在する場合
  $n = $_COOKIE['visitcount'];
} else{ //クッキーが無い場合
  $n = -1;
}
$n++; // カウント値+1
setcookie('visitcount', $n);
// ----- クッキー処理終了 --------

$i = array(1,2,3,4,5);
echo $i[n];
?>
id:taroemon

ご回答ありがとうございます。

大変参考になりました。

2009/03/18 21:42:05
id:kenz-firespeed No.2

Kenz回答回数104ベストアンサー獲得回数32009/03/18 12:26:33

ポイント17pt

カウンターのコードを流用しては?

うちのサイトですが

Firespeedダウンロード

id:taroemon

ご回答ありがとうございます。

やっぱりカウンターと同じ原理なんですね。

2009/03/18 21:42:09
  • id:kn1967
    最初なのか2回目なのか3回目なのか・・・
    その情報をどこに記憶しておくのが希望なのでしょうか?

    クッキー?
    テキストファイル?
    データベース?
    呼び出し側スクリプトの変数?

    目的によって、さらに細かくが変わってくるので
    何をしたいのかをもう少し具体的にしたほうが
    よろしいかと思いますよ。
  • id:taroemon
    kn1967さん

    コメントありがとうございます。質問が不明瞭で誠に申し訳ありません。

    >何をしたいのかをもう少し具体的にしたほうが
    >よろしいかと思いますよ。
    配列内の要素を順番に取り出してGoogleで検索したいのです。
    array('東京','大阪','北海道')
    「http://www.google.co.jp/search?q=」の後ろにくっつけて、
    「http://www.google.co.jp/search?q=東京」、
    「http://www.google.co.jp/search?q=大阪」、
    「http://www.google.co.jp/search?q=北海道」としたいのです。
    配列の要素は百個くらいあるので、
    半自動化と同時に、どこまで検索したか忘れてしまわないようにするのが目的です。

    >最初なのか2回目なのか3回目なのか・・・
    1回目から順番にやっていき、
    配列内の要素の数だけ繰り返していくということです。
    つまり、何回目ということではありません。
    調べごとは数日かかる見通しですので、
    パソコンの電源を切った後も、続行できる方法が望ましいです。

    >その情報をどこに記憶しておくのが希望なのでしょうか?
    特に指定はありませんが、もっとも簡単なスクリプトが望ましいです。

    これでいただいたコメントに対する回答になってるでしょうか?
  • id:Mook
    PHPとFireFox は必須ですか?

    私であれば、EXCEL に検索項目をリストアップし、VBA でIE を制御しながら検索をするような方法を
    考える気がします。

    PHP でやるのであっても、スクリプト内に配列で持つことはせず、ファイルでリストを作成し、読み込ん
    だらファイルから削除、というような感じでやるでしょうか。

    処理の内容にもよりますが検索自体を自動化して、必要なデータを EXCEL 等に集計したい感じですね。
  • id:taroemon
    Mookさん
    コメントありがとうございます。

    Firefoxは必須ではありません。私の環境を明らかにしただけです。
    処理だけであればVBAの方が優れているのかもしれませんね。
    大変参考になりました。

    勉強を兼ねてますのでPHPは必須とさせていただきます。
    配列化されているデータをどう処理するのか、
    この質問で勉強させていただければと思ってます。

    以上、よろしくお願いします。
  • id:kn1967
    >パソコンの電源を切った後も、続行できる方法が望ましいです。

    そのためには何回目・・・を記録しておかなければなりませんので

    >何回目ということではありません。

    とは相反しますよ。

    それはさておき、仕組みとしてはページカウンタと同じです。
    テキストファイルに「n回目まで終了(あるいは、次はn回目)」を
    記録しておけばよく、サンプルなども沢山あります。

    また、検索結果も同様に記録しておかなければなりませんが
    これはどうお考えでしょうか・・・。
    たった百個程度で数日かかるという事は、よほど回線が細いのか
    google検索結果ページを全て取得しようとでも思っているようですが
    データベースの準備なども必要になるのではありませんか?
    テキストファイルへの書き出しで間に合う量になりますか?
    まさかブラウザのキャッシュを利用しようとか思ってませんか?

    話は変わりますが、
    もしもphpをブラウザ経由で使うおつもりなら、非常に効率が悪く、
    また、いつ接続が切れて中断してしまうかもしれません。
    (長時間待たされるとブラウザ側が接続を切ってしまうため
    定期的にブラウザに何らかの返答を返す必要があったり
    不意にブラウザがフリーズしたり・・・)
    phpでも当然結構ですがブラウザ経由ではなく
    コマンドラインで動かせないかどうか検討してみてください。
    (php CLI などで検索すると情報は拾えます)

    さらに話は変わりますが
    今回のような目的であれば、ダウンローダを使うのが
    一番簡単確実だと思いますよ。
    ダウンローダ用のURLリストの作成だけをphpで行って
    あとはダウンローダ任せにすれば、途中再開なども当然行えます。
  • id:taroemon
    kn1967さん
    再度のコメントありがとうございます。

    >とは相反しますよ。
    失礼しました。

    >また、検索結果も同様に記録しておかなければなりませんが
    検索結果の記録は考えてません。

    >たった百個程度で数日かかるという事は、よほど回線が細いのか
    一日に100個のキーワードを検索したら普通大変ですよね。
    それを何日かに分けて行うという程度の意味合いです。
    パソコンの電源を切った何日後でも、処理が中断されないようにということを、
    理解していただきたいと思い、このような表現を使いました。

    >google検索結果ページを全て取得しようとでも思っているようですが
    >(中略)
    >まさかブラウザのキャッシュを利用しようとか思ってませんか?
    あの・・・。そのようなことは一切考えてません。
    というか、kn1967さんのおっしゃる意味がよくわからず非常に困惑しております。

    このスクリプトはGoogleでたくさん検索するという単純なことでも、
    勉強のためにPHPでやってみようというつもりで作ろうとしました。
    それ以上でも、それ以下でもありません。

    私の不適切な表現が原因だと思いますが
    私の質問や発言をご不快に思われてるようでしたら深くお詫びします。

    そのほか、いろいろご指導いただきありがとうございます。大変参考になりました。
  • id:kn1967
    >意味がよくわからず

    googleの検索結果って、数万件や数十万件ってのもザラですよね?
      ↓
    1回の検索でも膨大な量が返ってくるgoogle検索が対象だったので
    数日かかるという表現も、ある程度は当然の事と理解してました。
      ↓
    膨大な量ですから、それを見るのもまた一苦労・・・。
    見るのではなくデータとして処理するのでも結構苦労・・・。
      ↓
    データベースなどに一時的にでも格納する必要があるという流れになってます。


    >勉強を兼ねてます
    >勉強のためにPHPでやってみよう

    「兼ねていた」という表現からも、「目的は検索」にあるという事になり、
    適材適所を考えてダウンローダとかVBAで行ってはという話になっていた訳ですが
    「学習が主目的」だったのですね。それならば話は大幅に変わってきますが・・・

    いずれにしても、まずはコメント欄で確認をとってからと考えていたのですが
    既に締め切られたようなので、ひとまず失礼。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません