• ベストアンサー

繰り返し読み込まれるphpでの配列情報の保持について

下記のような配列を設定しています。これは自分で設定しているので ユーザーから受け取って変動するタイプのものではありません。 $pinfo[] = array("T","ご","イ"); $pinfo[] = array("E","は","ロ"); $pinfo[] = array("S","ん","ハ"); これをdata.phpとして保存し、show.php内でinclude('data.php')として読み込んで使用できています。 しかし、show.phpはURL(GET用パラメーター)が変わる形で閲覧者が何回か読み込み直すことが前提のため、 そのたびにdata.phpが読み込まれ、一から同じ配列が設定されるのは無駄ではないかと思いはじめました。 また、$pinfo[]の数は今後1000程度まで増やす予定なので、増やした時に動作が遅くならないかも不安です。 この配列を最初の読み込みだけでブラウザもしくはshow.phpが閉じられるまでは保持し、 繰り返し読み込まれるshow.phpで利用するのに、 できるだけ簡単な方法にはどんなものがありますか? 自分ではセッション、クッキー、データベースなども一生懸命調べましたが、 そもそもこういう変化しない情報に使うべきものなのかわからず、 実際の使い方やルールの理解にも手間取っています・・・。 まだ勉強をはじめたばかりで、稚拙な説明でしたらすいません。 どうぞよろしくお願いいたします。

  • r_bel
  • お礼率95% (81/85)
  • PHP
  • 回答数2
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • singlecat
  • ベストアンサー率33% (139/418)
回答No.1

今のままで良いと思います。 結局セッションにするなら、セッション変数をセッション用のファイルに保存する処理、セッション用のファイルから変数を読み込む処理が増えるので、余計に動作が遅くなります(と言って微々たるものですが)。

r_bel
質問者

お礼

さっそくのご回答ありがとうございました。 singlecatさんのようなプロの方に「今のままで良い」と 言っていただけてホッとしました♪ 結局どこか複数のファイルが共有できるところに保存するというのは ファイルなり、セッションなり、結局はそこから配列に読み込んで使うことになるのかな、 ということがなんとなくわかったような気がします。 きっとユーザー側に保存というのがあっても、それもユーザーの設定や環境にも依存してしまって良くないのかな、と。 素人質問にお答えくださり、本当にありがとうございました!

その他の回答 (1)

  • mpx
  • ベストアンサー率71% (149/209)
回答No.2

>> 繰り返し読み込まれるshow.phpで利用するのに、 >> できるだけ簡単な方法にはどんなものがありますか? 何を簡単にしたいかですが、 管理を簡単にするなら、今のままでしょう。 サーバーの効率だけなら、show.phpにハードコーティングする。 ことになるかな

r_bel
質問者

お礼

ご回答ありがとうございます。 簡単に、と思ったのは私の管理についてではなく、 同じ情報を何度も同じ名前の変数や配列に入れるのは コンピューター(サーバーなりローカルなり)によって無駄な負担が かかるのではないか、何かそれを回避する方法があるのでは? という素人考えからの質問でした。 ハードコーディングという言葉を始めて聞きましたので、 Google検索して意味は理解できましたが、 私の場合、具体的にはどうすることがそれに当たるのかわからなかったので、 やはり現状のままで行きたいと思います。 ありがとうございました!

関連するQ&A

  • PHPのメモリ?

    こんばんは。質問させて下さい。 PHPプログラム内で複数の配列を設定したとします。 ======================== $array00000001=array("1", "2", "3",・・・); $array00000002=array("1", "2", "3",・・・); $array00000003=array("1", "2", "3",・・・); ・ ・ ・ ======================== 設定した配列の情報はメモリに保持されるとおもいますが、容量の限界はあるのでしょうか? PCのスペックに依存するのでしょうか?それともPHP独自できまっているのでしょうか? ご存知の方、いらっしゃいましたらご回答お願い致しますm(_ _)m

    • ベストアンサー
    • PHP
  • PHPのようにスマートに配列の配列など記述する方法が

    PHPの場合、データ構造ですが以下のようになっています。 $a = array( "test1" => array( array(1,1), array("x", 2) ), "test2" => array( array(3,2), array("y", 1) ), ); これをエクセルVBAの場合、Scripting.Dictionaryを使えば連想配列が 可能ですが、PHPのようにスマートに配列の配列など記述する方法が わかりません。 Dim dic As Scripting.Dictionary set dic = New Scripting.dictionary dic.Add "test1", ???????????????? dic.Add "test2", ???????????????? スマートにデータ構造を実現できる方法が知りたいです。

  • javascriptの配列をPHPで読み込みたいのですが・・・

    javascriptの配列を記述してあるファイル info.js があるとします data = new array(); data[0] = new array("data1","data2","data3"); data[1] = new array("data1","data2","data3"); data[2] = new array("data1","data2","data3"); ・ ・ ・ 上記の文で書かれた配列データを、PHP上で読み込み、新着一覧のような形でhtmlで表示したいのですが、方法が分かりません。 分かる方がいらっしゃいましたら教えて下さい。

    • ベストアンサー
    • PHP
  • PHPの配列をjavascriptへ渡したい

    PHPの配列をjavascriptの配列に渡したいのですがやり方がわかりません。 変数の渡し方ならわかるのですが配列はどう渡せばいいのでしょうか? for文を使って渡せばいいと思うんですがどうやればいいか分かりません。 <?php $filedata=file("data.txt");//javascriptに渡したい配列 ?> <script language="javascript"> var a=new Array();//PHPの配列をこの配列に入れたい </script> 何方か教えてください。

    • ベストアンサー
    • PHP
  • phpのセレクトボックスの配列について

    お世話になっています。 PHPのセレクトボックスの設定でわからないことがあります。 一度質問させていただいたのですが連なる点でわからないとこが出たので質問させていただきます。 不明点は3つあります。 1.セレクトボックスの値を配列で設定する 配列で設定しておけばその配列を複数使用しても参照配列さえメンテすればいいと思うので配列を想定しています 2.配列で設定したときのセレクトボックスの初期値について セレクトボックスの値をベタ書きしている場合は単にselectedすればいいと思うのですが配列の場合厳密なselectedの方法が不明です 3.配列での選択値をPOSTした場合 3つめが最もはまっています以下のソースだと選択値が配列の値が表示されますし、初期値も表示できていますが POSTした値がまともに渡されていません POST先でDB処理を想定しているのですがdate型だとすべて[00:00:00]になってしまいます。 配列を使用しないパターンだと1.2.3全てうまくいくのですがメンテナンスがしづらいので配列で指定したいです 何か、良い方法があればご教授ください //配列の値 $time = array( "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23" ); $minute = array ("00", "15", "30", "45"); for( $a=0; $a < count( $time_array ); $a++){ $selectedStartTime =($time_array[$a] == $start_time[$j])?" selected":""; $startTimeSelectBox .= "\t<option value=\"{$time_array[$a]}\"{$selectedStartTime}>{$time_array[$a]}</option>\n"; } for($a=0; $a < count($minute_array); $a++){ $selectedStartMinute =($start_minute[$j] == $minute_array[$a])?" selected":""; $startMinuteSelectBox .="\<option value=\"{$minute_array[$a]} \"{$selectedStartMinute}>{$minute_array[$a]}</option>\n"; } <td><select name="start_time<?php echo $day ?>" onblur = "func()"> <?php echo $startTimeSelectBox ?> </select> : <select name="start_minute<?php echo $day ?>" onblur = "func()"> <?php echo $startMinuteSelectBox ?> </select> </td> かなり詰まっています。よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHP 配列の計算で困っています。

    PHP 配列の計算で困っています。 現在ショッピングカートをsmartyを使って作成しています。 連想配列の計算をしたいと思っているのですが、1日迷っています。 <?php $bookid = $_POST['bookid']; //削除ボタンが押下 if($_POST['sakuzyo']){ unset($_SESSION['cart'][$bookid]); } //数量 小計 合計金額取得 $suryo = $_POST['suti']; $nedan = $_SESSION['cart'][$bookid]['nedan']; $shoukei = $suryo * $nedan; //再計算ボタン押下 if($_POST['saikeisan']){ $_SESSION['cart'][$bookid]['suryou'] = $suryo; $_SESSION['cart'][$bookid]['shoukei'] = $shoukei; } //商品リスト取得 if(isset($_SESSION['cart'])){ $item = $_SESSION['cart']; print_r($item); Array ( [1] => Array ( [id] => 1 [boki] => 洋書 [bokt] => test洋書 [nedan] => 230000 [suryou] => 1 [shoukei] => 230000 ) [7] => Array ( [id] => 7 [boki] => 和書 [bokt] => test和書和書和書和書和書和書和書和書和書 [nedan] => 320 [suryou] => 1 [shoukei] => 320 ) ) } $goukeikingaku = 230000 + 320みたいな形で合計金額を 取得したのですが、わかりません。よろしくお願いします.。

  • PHPのarray配列について初心者の質問です。

    サイトを見ながらPHPを勉強しています。 入力チェックとエラー表示(1) - PHP基礎講座 http://www.phppro.jp/school/phpschool/vol6/2 で、 $error_message = array(); のarrayの使い方がよくわかりません。 arrayとは <?php $data = array("1"=>"ああああ","2"=>"ああああ","3"=>"ああああ"); ?> と言うように、()内に配列していく関数ですよね。()内に何もない場合はどういう様な動きになるのか、よくわかりません。このように書くと、()の中に連想配列で、$error_messageが読み込まれていくのでしょうか??? うまく質問も出来ない位の知識ですが、解説お願いします。

    • ベストアンサー
    • PHP
  • セッション変数と配列

    通常の変数であれば、 $var = array($_POST["var1"], $_POST["var2"], $_POST["var3"]); ですが、セッション変数を配列にするにはどうしたら良いのでしょう? (配列から取り出す方法も含め) $var = array($_POST["var1"], $_POST["var2"], $_POST["var3"]); $_SESSION["$var"]; や $_SESSION["$var"] = array($_POST["var1"], $_POST["var2"], $_POST["var3"]); としてみましたが、ダメなんですね。 よろしくお願いいたします。 *PHPバージョンは5です

    • ベストアンサー
    • PHP
  • PHPの多次元配列について

    HTMLでホームページを作れる以外はプログラムに関しほぼ素人です。 環境 XAMPP1.70(最新)にてアパッチなど一括ダウンロード PHP言語にて3×4の表で以下の数値を多次元配列にて作成しようと思っているのですが、当方初心者なもので、 以下のコード(細かい部分は省略しています)、特にforeachがネストになっている部分の処理の流れがいまいちよくわかりません ~~~~~~~~~~~~~~~~~~~~~~~~~ <table border=2> <th>都市名</th> <th>最高気温</th> <th>最低気温</th> <?php  $data=array( array("東京"32,25) array("名古屋",45,67) array("埼玉",32,67) array("大阪",86,34) ) foreach($data as $city){ print "<tr>"; foreach($city as $value){ print "<td>{$value}</td>"    ●1回目foreachからここまでの流れがいまいち分かりません } print "</tr>"; ?> ~~~~~~~~~~~~~~~~~~~~ 一つ目のforeachにて、配列$dataが指定されていますので外側の配列を処理していくと思うのですが、具体的にどういう順番で処理されていくのでしょうか。 またforeach()の中の"$cityが最終的に$valueに格納という形になっていますが、10~13行目のarray("東京",32,25)とどのような関係で処理されていっているのか教えていただけませんでしょうか。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • phpでCSVファイルの中身を多次元配列にしたい

    PHPを学習中です。CSVを多次元化して最後はセッションに格納し、自由に他のページでもそのセッションを読み込めるようにしたいです。 CSVの中身はコード名、商品名、値段、在庫数になっています。 while(!eof($f_pt)){  $data=fgets($f_pt);  $data=rtrim($data);  $str=explode(",",$data);  $str[0]=array($str[1],$str[2],$str[3]); } こんな風にひとまずコードに格納してwhileで回せばいいのかな??っと苦戦しています。 そしてセッションにしたあとforeachでどうやって配列で表示すればいいかわかりません。。。 アドバイス等頂けたら幸いです。よろしくお願いします。

    • ベストアンサー
    • PHP

専門家に質問してみよう