トップページ⇒php
1001コメント336KB

【PHP】下らねぇ質問はここに書き込みやがれ 35

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2006/12/21(木) 13:42:19ID:???
PHPに関する質問用スレです。ここならお前の下らない質問に回答があるかも知れません。

まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り

◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 34
http://pc8.2ch.net/test/read.cgi/php/1165519374/

◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。

◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)

◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ http://pc8.2ch.net/php/subback.html
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで http://pc8.2ch.net/db/subback.html
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
 しかし初心者が目的も定めずに速度を気にしたところでほとんど意味は無いぞ
0002nobodyさん2006/12/21(木) 13:42:50ID:???
■過去ログ
【PHP】下らねぇ質問はここに書き込みやがれ 27
http://pc8.2ch.net/test/read.cgi/php/1156262092/
【PHP】下らねぇ質問はここに書き込みやがれ 28
http://pc8.2ch.net/test/read.cgi/php/1157284868/
【PHP】下らねぇ質問はここに書き込みやがれ 29
http://pc8.2ch.net/test/read.cgi/php/1158434799/
【PHP】下らねぇ質問はここに書き込みやがれ 30
http://pc8.2ch.net/test/read.cgi/php/1159979905/
【PHP】下らねぇ質問はここに書き込みやがれ 31
http://pc8.2ch.net/test/read.cgi/php/1161733546/
【PHP】下らねぇ質問はここに書き込みやがれ 32
http://pc8.2ch.net/test/read.cgi/php/1162818436/
【PHP】下らねぇ質問はここに書き込みやがれ 33
http://pc8.2ch.net/test/read.cgi/php/1164209222/
0003nobodyさん2006/12/21(木) 13:43:23ID:???
関連リンク
■本家マニュアル   http://www.php.net/manual/ja/
■日本PHPユーザ会 http://www.php.gr.jp/
■PEARマニュアル  http://pear.php.net/manual/ja/
■メーリングリスト   http://ns1.php.gr.jp/mailman/listinfo/
■ZFマニュアル    http://framework.zend.com/manual/ja/

(以下英語)
■Smarty       http://smarty.php.net/
■Zend本家      http://www.zend.com/
■Zend Framework  http://framework.zend.com/
■php | architect   http://www.phparch.com/
■Smartyマニュアル http://smarty.php.net/manual/en/
■PECL本家(英語) http://pecl.php.net/
0004nobodyさん2006/12/21(木) 13:43:52ID:???
関連スレ
注:昔は本スレ(PHP質問スレ)というのが別にあったけど、今はここが本スレです。

◆超初心者を自覚してる方ははこちらへどうぞ
くだすれPHP(超初心者用)2
http://pc8.2ch.net/test/read.cgi/php/1164617202/

◆その他
http://pc8.2ch.net/php/subback.html
PHP関連スレは非常に多いのでこの中でブラウザのCTRL+F等で「PHP」を検索!

5 名前:nobodyさん[sage] 投稿日:2006/12/08(金) 04:24:36 ID:???
【簡易FAQ】
1.文字コードは何を使えばいいの?
 →1.UTF-8 2.EUC-JP のどちらか。迷うようなやつはShift_JISは使っちゃダメ。
2. このスレに書き込むときに自分のサイト名を晒したくない
 → http://example.com/が例文などのために予約されている。hogehoge.comは使っちゃダメ。
3. ブラウザに何も表示されないんだけど・・・
 → Apacheの設定を見直せ。ファイルの拡張子は何にしてて、その拡張子でPHPを呼ぶようになっているか?
4. 記号の意味がわからないけどググりようがない
 → 「@」 エラー表示を抑制、「->」 オブジェクトのメンバにアクセス、「::」 静的なメソッド呼び出し、
  「==」は暗黙の型変換をしてゆるい比較、「===」は型情報も含めた厳密な比較
5. echo "$arr['hoge']['fuga']"; と書いたらエラーになった
 → {おっぱい括弧}でくくって"{$arr['hoge']['fuga']}"にする
6. 一定時間ごとに自動的に何かしたいんだけど
 → cronかタスクスケジューラを使え。
7.extractって危険なの?
 →変数上書き&初期化忘れなどで危険。楽だからという理由だけで安易に使わない。
8. include/requireに「〜.php?a=b&c=d」のようなパラメータをつけたい
 → URL呼び出しなら可能だけど、普通のファイル呼び出しではできません
9.include/requireでURLを指定しても何も起きない
 → .phpの拡張子のファイルをURLで呼び出すと、1度PHPプログラムとして実行された結果になる。
0005nobodyさん2006/12/21(木) 13:44:23ID:???
10. そもそもインストールの時点でうまくいかない
 → 確認すべきはPHPのconfigureの引数、php.iniの内容と置き場所、
  Webサーバの設定(Apacheならhttpd.conf)、起動&再起動あたり
11. SQLの質問はどこで?
 → データベース板に誘導されるのが嫌ならPHPにうまく関連させて質問する
12. 文字列のなかに、英字のみとか数字のみとか記号が入っちゃいやんとかはどうしたらいいの?
 → ctype_〜()が手軽。複雑なパターンはpreg_〜()あたりで正規表現を使う。
13. $a1, $a2, $a3 ... のような変数名をうまく扱いたい
 → 可変変数で実現できるけど、むしろ配列を使って$a[1], $a[2], $a[3]等とするのがベター
14. echoとprintってどう違うの?
 → よく議論される話題であるが基本的に両者とも同じ。 以下ちょっとした議論。
  http://www.faqts.com/knowledge_base/view.phtml/aid/1/fid/40  
15. クッキーの情報をユーザから隠したい
 → セッション使え。ただしクッキーとセッションは仕組みが違うから同じように扱うな
16. strip_tags()で削除しないタグを複数指定したい
 → strip_tags($html, '<a><p><font>'); // htmlspecialchars()も検討すべし
17. CSVやTSVのファイルをスマートに扱いたい
 → まずはfgetcsv()。ただし日本語を含むと正常に動作しない場合があるので注意だ。
18. 値渡しと参照渡し(「&」を使う)のパフォーマンスの違い
 → C言語じゃないので、パフォーマンス目的で使いわけたらダメ。参照渡しにすると逆に遅くなったりする
  参照渡しは引数に戻り値を設定したり引数を関数内で変更するなど、正しい目的に使うこと
19. ファイル入出力関数(fopen等)でリモートファイル(http://〜とか)を扱う際の限界
 → fsockopen()でソケット通信 or PEARのHTTP系 or CURLで解決
  必要ならHTTPをはじめとする各種プロトコル(どんなデータを送受信するか)はRFCなどで調べる
20. PHPからPOSTリクエストしたい
 →19.を参照
21. 画像処理一般 or GDの限界
 → ImageMagick(PECLのやつ or シェルから実行)
22. 画像・音・動画はファイルで保存?DBに保存?
 → 好きにしてください
0006nobodyさん2006/12/21(木) 13:44:54ID:???
「エスパーきぼんぬ」「氏ね」「(゚Д゚)ハァ?」等のレスを貰う八ヶ条。
1. ハードウェア、OSのバージョン等には一字一句触れない。
2. 大切な個人情報が漏れるとまずいので、己の行った操作、変更などは秘密。
3. エラーメッセージの類は決して書かない。「エラーが出るんです」で留める。
目の前で生じている現象をそのまま具体的に書くなどもっての外。
事実より俺様の脳内解釈を優先すべし。
4. 独り言文体で必勝。
「…なんだけど、どうすればいいのかなぁ」「何が悪いんだろう?」
5. 「急いでいます」「困っています」等、自分の都合を全面に押し出す。
6. もう試したことを得意げに指摘してくる奴には、厳しく対応。
「それが駄目だったから質問してるんです」「それはもう試してみて駄目でした」
"どう"だめだったのか、本当に実際それを行ったかどうかなんか問題じゃない。
7. ストレートに答えを書かないもったいぶったレスには、逆切れで対応。
「だからどうすればいいんですか?」「分からないなら引っ込んでろやゴルァ」
示されたURL等を参照するなんて態度は、回答者を甘やかすことに他ならないので
絶対に避ける。
8. 情報は小出しに。

「エスパーきぼんぬ」 補足
上の八ヵ条を「一つでも」満たす者は質問者として不適格だということだ。
そのような悪い質問に対して答えられるのは,
質問者の意図をすべて汲み取ることのできるエスパーでもなければムリ,
という意味であって,決して,高度な技術を持つユーザに対する尊称でなはい。
まちがっても「エスパーの方,回答お願いします」
なんて痛い質問するな。つうか氏ね。
000712006/12/21(木) 13:52:35ID:???
>>4で前スレの4+5を一緒に貼ってしまってる…。吊ってくる。
0008nobodyさん2006/12/21(木) 13:54:46ID:???
>>1乙イ�`
0009nobodyさん2006/12/21(木) 14:01:22ID:???
すみません、何かfunctionを使ったらエラーが出るんです。
急いでいるので教えてくれませんか???
0010nobodyさん2006/12/21(木) 14:05:06ID:???
>>9
私も急いでいるので答えられません。
0011nobodyさん2006/12/21(木) 14:06:18ID:???
>>1
乙
エスパーきぼんぬも入れてくれてありがとう。

>>9
急ぐのをやめればOK
0012nobodyさん2006/12/21(木) 14:09:25ID:???
前スレでも書いたんだけどテンプレにこれもいれて欲しかった・・
過去ログが大量にあされるから、次スレでいれてくれ
http://makimo.to/2ch/pc8_php/index.html
0013nobodyさん2006/12/21(木) 14:17:09ID:???
「年内で終了なんだよな」というのが気になったので、あえて入れないままにしました。ごめん。
今後は●持ち頑張れなのかもしれません。
0014nobodyさん2006/12/21(木) 14:22:37ID:???
12のPHP最適化テクニック
ttp://phpspot.org/blog/archives/2006/11/12php.html

01. staticメソッドが使えるなら使おう。速度は4倍になる
02. __get, __set, __autoload は使わない
03. require_once は重い
04. include, requireで読み込むファイルはフルパスにしよう
05. スクリプト開始時のUNIXタイムを $_SERVER['REQUEST_TIME'] で取れる
06. strncasecmp関数やstrpbrk関数を使えるケースはこれらを使い、正規表現は使わない
07. preg_replaceはstr_replaceより速い、しかし、strtrはpreg_replaceより4倍速い
08. 引数を、単体か配列かで自動判別するようなコードは出来るだけ避ける
09. @ を使ったエラー制御はとても遅い。→ @fputs($fp, "?");
10. $row["id"] は $row[id] より7倍速い
11. PHPのエラーメッセージは重い( noticeとかwarningとか)
12. for ($x=0; $x < count($array); $x) のように、forの中でcountを使うと毎回countが呼ばれるので使わない。
0015軟式PHP2006/12/21(木) 14:24:43ID:???
require_once…使ってる('A')
0016nobodyさん2006/12/21(木) 14:33:31ID:???
>>15
俺もだ・・・
これはrequireかincludeにかえたほうがいいのかな
0017nobodyさん2006/12/21(木) 14:52:49ID:???
>>14
03と05が為になった。
10は?
後ろのidは定数?
0018nobodyさん2006/12/21(木) 14:53:11ID:???
>>15
本とかwebでサンプル見ると、普通に使ってるよね。
>>16の言うとおり変えたほうがいいのかな?
0019nobodyさん2006/12/21(木) 14:54:12ID:???
>>16
そらー、多重読み込みしないように気を遣って
無条件に読み込むようにすれば速いでしょう。
でも多数のincludeファイル間で相関があるなら
メンテナンス性を考慮するとonceが必要だと思うけどね。

明らかに多重読み込みを防止する必要が無い場面でまで
onceを使うなよ、って程度でいいんじゃないか?
0020nobodyさん2006/12/21(木) 14:56:07ID:???
>>14
07が意外だ…str_replaceってそこまで遅いのか!?
0021nobodyさん2006/12/21(木) 14:58:00ID:???
ページの最初にheaderとして使う場合はincludeでよさげかな
0022nobodyさん2006/12/21(木) 14:58:37ID:???
じゃあおれが夜中ベンチマークとって調べてみるよ
0023nobodyさん2006/12/21(木) 14:58:50ID:???
>>17
$row[id]と書いた場合、まずdefine定義の「id」を探して
それが無かった場合に"id"という文字列として扱われるから
その検索にかかる時間の話だと思われ。
無駄な検索処理を避けよう!ってのは02、03、04も同様かと。
0024nobodyさん2006/12/21(木) 15:00:53ID:???
$data = array(
'1'=>array('type'=>'hoge', 'age'=>22),
'2'=>array('type'=>'foo', 'age'=>13),
...
);
こんな配列があった時、
$data[1]や$data[2]や$data[3]などをランダムに入れ替えたいのですがどのような方法があるでしょうか?
簡単に言うと
$data = array(
'1'=> array('type'=>'foo', 'age'=>13),
'2'=>array('type'=>'hoge', 'age'=>22),
...
);
こんな感じで、$data[$1]ここの$1以下をランダムで挿げ替えたいのです。
shuffle($data)ではできませんでした。。
0025nobodyさん2006/12/21(木) 15:10:12ID:???
$msg = "MIME-Version: 1.0\n";
〜 省略 〜
$msg .= "From: $this->m_from\n";
$mp = popen("/usr/sbin/sendmail -f $this->m_from $this->m_to", "w");
fputs($mp, $msg);
pclose($mp);

今までメール送信するときはこの用にsendmailを使ってきたのですが、
qmailで同じようなことを行う方法をご存知ないでしょうか。
よろしくお願い致します。
0026nobodyさん2006/12/21(木) 15:22:11ID:???
>>24
shuffleでできたけど・・・・
0027nobodyさん2006/12/21(木) 15:23:48ID:???
>>25
そんな変なメール送信方法、使ったことありません。
むしろそんだけ単純な方法なら簡単にqmailに変えられるんじゃない?
qmailのsendmailラッパーを使えば見た目sendmailで中身qmailとかできるでしょ。
0028nobodyさん2006/12/21(木) 15:25:36ID:???
mail関数あるのに・・・
0029nobodyさん2006/12/21(木) 15:26:43ID:???
>>26
せっくっす
0030nobodyさん2006/12/21(木) 15:29:00ID:???
◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
0031nobodyさん2006/12/21(木) 15:33:59ID:???
>>30
自治厨うざい
0032nobodyさん2006/12/21(木) 16:04:28ID:???
そういえばどこかに自作関数公開するスレなかったっけ?
こんなの作ったんだが使えるかな?
北緯東経より二点間の距離をメートルで返す

function gps($NA,$EA,$NB,$EB){

list($NA1,$NA2,$NA3,$NA4) = split("[.]",$NA);
list($NB1,$NB2,$NB3,$NB4) = split("[.]",$NB);
list($EA1,$EA2,$EA3,$EA4) = split("[.]",$EA);
list($EB1,$EB2,$EB3,$EB4) = split("[.]",$EB);

$q1 = round($NA1+(($NA2/60) + (($NA3.".".$NA4)/3600)),6).",+".round($EA1+(($EA2/60) + (($EA3.".".$EA4)/3600)),6);
$q2 = round($NB1+(($NB2/60) + (($NB3.".".$NB4)/3600)),6).",+".round($EB1+(($EB2/60) + (($EB3.".".$EB4)/3600)),6);

$NA = $NA1 + ($NA2 / 60) + ($NA3 / 3600) + ($NA4 / 3600000);
$EA = $EA1 + ($EA2 / 60) + ($EA3 / 3600) + ($EA4 / 3600000);
$NB = $NB1 + ($NB2 / 60) + ($NB3 / 3600) + ($NB4 / 3600000);
$EB = $EB1 + ($EB2 / 60) + ($EB3 / 3600) + ($EB4 / 3600000);
0033続き2006/12/21(木) 16:05:07ID:???

$NA = 3.1415926535 * $NA / 180;
$EA = 3.1415926535 * $EA / 180;
$NB = 3.1415926535 * $NB / 180;
$EB = 3.1415926535 * $EB / 180;

$NA = $NA - ((11.55 / 60) * 3.1415926535 / 180) * sin (2 * $NA);
$NB = $NB - ((11.55 / 60) * 3.1415926535 / 180) * sin (2 * $NB);

$c = cos($NA)*cos($NB)*cos($EA-$EB)+sin($NA)*sin($NB);
$s = sqrt(1-($c*$c));
$t = $s/$c;
$z = atan($t);
$z = $z * 6369000;

if($z){
return $z;
}else{
return FALSE;
}
}
0034nobodyさん2006/12/21(木) 16:09:56ID:???
>>14,20
ttp://jigen.aruko.net/archives/433/
0035nobodyさん2006/12/21(木) 16:21:03ID:???
>>32
よくわかんないけどすげ〜
あなたのサイト教えて
0036nobodyさん2006/12/21(木) 16:23:35ID:???
>>35
ごめん、まだサイト持ってないです
就職活動中だがポートフォリオない俺オワタwwww

----------------------------------------------------
(使用例)
//大阪
$osaka_n = "34.41.56.713"; //北緯
$osaka_e = "135.29.53.705"; //東経

//兵庫
$hyogo_n = "34.41.27.261"; //北緯
$hyogo_e = "135.11.50.825"; //東経

$result = gps($osaka_n,$osaka_e,$hyogo_n,$hyogo_e);
echo $result;
----------------------------------------------------

▼結果表示▼
27566.2781881

----------------------------------------------------
0037nobodyさん2006/12/21(木) 16:29:17ID:???
あんまり利用頻度は低そうだけどすごいと思うよ
0038nobodyさん2006/12/21(木) 16:38:03ID:???
>>23
解説ありがとう。
PHP暦長いつもりだけど、define定義の「ID」が未定義の場合、
”ID”という文字列として扱われることを知らなかったよ。

でも個人的にはいやな仕様だな。
バグの原因になるような気がする。
0039nobodyさん2006/12/21(木) 16:58:28ID:/jd0802W
少しご質問。
foreachでA配列を回しDBにインサートしていっているのですが
A配列の最尾からインサートしていくという処理は可能なのでしょうか。

0040nobodyさん2006/12/21(木) 17:05:09ID:???
>>39
自分に敬語使うようなやつには教えな〜い
0041nobodyさん2006/12/21(木) 17:16:31ID:???
>>38
notice errorが出るから判るよ
E_NOTICE消してたらだめだけど
0042nobodyさん2006/12/21(木) 17:17:39ID:???
>>39
array_reverse
0043nobodyさん2006/12/21(木) 17:19:18ID:/jd0802W
>>40
A配列のcountをとってfor文から行う事で解決しましたん!
0044nobodyさん2006/12/21(木) 17:20:40ID:/jd0802W
>>42
ありがとう
array_reverse 調べてやってみます!
0045nobodyさん2006/12/21(木) 17:45:07ID:???
MySQL3.23で使っていたデータベースを
別PCの5.1のに移したら
phpMyAdminで構造のとこ見たら何かエラーでてる・・・
やっぱり同じバージョンで統一しておかなきゃダメなのかな
っていっても、既に3.23の配布は終了しているわけで
0046nobodyさん2006/12/21(木) 17:47:16ID:???
>>41
thx
開発中はいつもE_ALLに指定してるので大丈夫そうだね。
0047nobodyさん2006/12/21(木) 18:00:53ID:???
>>45
何かエラーじゃ全くわからんが
MySQL は 4.0 以前と 4.1 以降では全く別物
0048nobodyさん2006/12/21(木) 18:15:47ID:???
>32
地球は完全球体じゃないという野暮なツッコミはなしですか
0049nobodyさん2006/12/21(木) 18:20:45ID:???
>>48
なしです
0050nobodyさん2006/12/21(木) 18:59:59ID:ZaC7YilI
log4php使ってる方いますか?
php5でも正常に使えるのでしょうか?
0051nobodyさん2006/12/21(木) 19:33:06ID:???
>>47
そか、ありがと
3がDLできるとこってもうないのかねぇ・・・
0052nobodyさん2006/12/21(木) 21:07:30ID:???
3どころか4.0自体がもう旧式だと思う・・・
0053nobodyさん2006/12/21(木) 21:08:45ID:???
>>51
4.0.xであれば3との親和性は十分高いから、4.0.xをインストールするのが適切。
4.1以降でさえなければまず大丈夫じゃない?
0054nobodyさん2006/12/21(木) 21:39:49ID:/jd0802W
えと、URLに付属するGETを削除する方法ってありますか。

セルフ.php?action=tatsunoko&id=pro

二回目はidを有効にしたくないのです!。
0055nobodyさん2006/12/21(木) 21:44:38ID:???
セルフ.php?action=tatsunoko&id=pro

      ↓

セルフ.php
0056nobodyさん2006/12/21(木) 21:57:03ID:???
>>54
2回目って何?
Locationヘッダで自分自身に1度飛ばしちゃえばいいのかなーって内容に見えるけど。
0057nobodyさん2006/12/21(木) 22:16:14ID:o0k/ncWb
mysqlを4.1(rpm)に、phpを5.2(コンパイル)にアップしました。
phpinfoで確認すると、cliでは mysqlの Client API version が 4.1.22 となりますが
webブラウザから確認すると 3.23.58 となっています。
apacheモジュールとcliではmysqlクライアントは別のものを使うんでしょうか?
Client API versionを上げるにはどうしたらいいのでしょうか。
0058nobodyさん2006/12/21(木) 22:41:50ID:???
入力→確認→送信
でセッション使ったんだが、クリアするのに
unset($str)でだいじょぶかな?
前スレにunsetはやめたほうがいいようなこと書いてたし
0059nobodyさん2006/12/21(木) 22:47:07ID:???
だからunset使わず、$a="";や$a=array();等使えと何度いったら(ry
0060nobodyさん2006/12/21(木) 22:55:04ID:???
>>58
根本的に間違っている気が…
0061nobodyさん2006/12/21(木) 23:15:17ID:cxJGLCdv
すみません、最近XPにアパッチ入れてphpいじりはじめたのですが、
ほんのサンプルにしたがってphp書いたらタイトルが文字化けしました。

<html>
<head>
<title>サーチエンジン活用php</title></head>
<body>
test
</body>
</html>

これのheadタグ内に、<META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=EUC_jp">
を足しても、Shift_JISに変更しても、やはり文字化けします。

php.ini の mbstring.internal_encoding = EUC-JP をShift_JISに変更しても
化けるんですが、どこを直したらいいのでしょう?
すみませんが、ご回答よろしくお願いします。
0062nobodyさん2006/12/21(木) 23:21:33ID:???
mbstring.http_output
0063nobodyさん2006/12/21(木) 23:32:31ID:1NDthtg1
$int = 300;

変数$intには (int) 300 が代入されているとします。
これを、1から300まで一つずつ配列に入れたいのですが、どういうふうに
するのが一番スマートでしょうか?

そういう関数があれば一番良いとは思うのですが……。

余談: 書くときに「ずつ」なのか「づつ」なのか迷った。
   調べてみると「づつ」は歴史的仮名遣いらしい。今まで「づつ」って書いていたよ……。
0064542006/12/21(木) 23:33:16ID:???
>>55>>56
今みると自分でも意味不明でした。
今日は晩飯抜きの刑で明日に備えます。
0065632006/12/21(木) 23:36:07ID:1NDthtg1
例示:

array(300) {
  [0] => int(1)
  [1] => int(2)
  [2] => int(3)
:
:
  [298] => int(299)
  [299] => int(300)
}

こんな感じです。分かりにくいとは思いますがよろしくお願いします。
0066nobodyさん2006/12/21(木) 23:38:26ID:cxJGLCdv
>>62
ありがとうございます、ちゃんと表示されました。

なんか、良く探したらこのページにも書いてあったんですが、
http://park1.wakwak.com/~ima/php_tips0001.html
Shift_JISで設定するのと、EUC_JPで設定するので何か決定的な
違いがあるのでしょうか?

文字コードの意味とか解説してる本とかあるでしょうか?
あ、自分でも探します。。
0067nobodyさん2006/12/21(木) 23:38:29ID:???
>63
for($i=1;$i<$int;i++){
$intarray[]=$i;
}
0068632006/12/21(木) 23:39:48ID:1NDthtg1
>>67
やはりループさせるしかありませんよね。
ありがとうございました。
0069nobodyさん2006/12/21(木) 23:44:12ID:???
ループしかおもいつかんかった。
0070nobodyさん2006/12/21(木) 23:46:59ID:???
>>63
$array = range(1, $int);
0071nobodyさん2006/12/22(金) 06:25:33ID:???
任意のセッション変数を破棄するときに、なぜunsetではダメなの?

俺がテストしてみたところ、unsetによって、
セッションファイルに記録されていた変数名とその内容(値)が
きっちり削除されていたので、問題ないと思うんだけど?
0072nobodyさん2006/12/22(金) 07:53:49ID:???
>>71
unset($_SESSION)はだめよってことじゃないの
0073nobodyさん2006/12/22(金) 08:13:36ID:???
>>72
なるほど、じゃあ例えば
unset($_SESSION['hoge']);
ならばOKってこと??
0074nobodyさん2006/12/22(金) 11:31:54ID:???
>>73
マニュアルにあるからいいんじゃない
http://jp2.php.net/manual/en/ref.session.php
のExample 2
<?php
session_start();
// PHP 4.0.6とそれ以前では$HTTP_SESSION_VARSを使用してください
unset($_SESSION['count']);
?>
0075nobodyさん2006/12/22(金) 12:57:35ID:???
curl_getinfoを使ってファイルの更新時間って取得できる?
マニュアルでそれぞれの項目の説明で違う事書いてあるんですけど・・
使ってみたらいいんでしょうけど、記述方法が間違っているのか値が取得できないんです。
正解を教えてください
0076nobodyさん2006/12/22(金) 15:34:26ID:u4lBJyPy
$dataの中が"あああ","いいい\""と[\"]が余分に入っているデータがあるのですが、
これを消す(\"を空白に置換する)方法が分かりません。

$str=eregi_replace("[\"]","",$data);

としてみたのですが、全体の"まで消えてしまい、希望通りなりませんでした。
どうしたらいいのでしょうか?
0077nobodyさん2006/12/22(金) 15:40:20ID:???
>>76
エスパーな俺はmagic_quoteの問題だと推測。
消す事を考える前に余計な文字が入る理由を考えよ。
0078nobodyさん2006/12/22(金) 15:41:38ID:???
正規表現がちがくね?
「\\\"」 かな、試してみて
0079762006/12/22(金) 15:45:45ID:???
>>78
これです!\を消すのにどういう正規表現かわからなかったんです。
凄く参考になりました。ありがとうございました。
0080nobodyさん2006/12/22(金) 15:47:55ID:???
>>77
(´・ω・)
0081nobodyさん2006/12/22(金) 17:12:02ID:???
>>77
(´-ω-)
0082nobodyさん2006/12/22(金) 17:15:50ID:FQdb0ydc
77 :nobodyさん :2006/12/22(金) 15:40:20 ID:???
>>76
エスパーな俺はmagic_quoteの問題だと推測。
消す事を考える前に余計な文字が入る理由を考えよ。
0083nobodyさん2006/12/22(金) 17:24:05ID:???
77(*´・ω・)(・ω・`*)ネー
0084nobodyさん2006/12/22(金) 17:24:40ID:n9VSwh4k
データベースからデータを取得して表示する処理なんですが、一ページ
30件ずつにわけて表示することにしました。

SELECT * FROM `tbl_name` LIMIT 90, 30

ここで困ってしまったですが、次のページ(90件以降の30件)と
前のページ(90件以前の30件)をナビゲーションしなければならないことです。
私は、それぞれのページへリンクすることでこれを実現しようと考えたのです。

<a href="?page=2&amp;count=30">前のページ</a> :: <a href="?page=4&amp;count=30">次のページ</a>

ただ単に ($_GET["page"] + 1), ($_GET["page"] - 1) とやってもできるのですが、これだと
データが存在しないのに永遠とページが作られてしまうだけなので、次の30件、前の30件が
それぞれ存在する場合にこのリンクを表示するようにしたいと思っています。

こういう場合どうするのが一番効率的にできるのでしょうか。
できれば関数化して、ページがあれば TRUE 、なければ FALSE というのが良いと思っています。
0085nobodyさん2006/12/22(金) 17:28:35ID:???
表示総数取得してページ計算したらいいだけじゃないの?
俺はこの方法だけど?
0086nobodyさん2006/12/22(金) 17:43:37ID:n9VSwh4k
>>85
$result = mysql_query( "SELECT COUNT(*) FROM `tbl_name`" );
$row = mysql_fetch_row( $result );
$num_maxrows = (int)$row[0];

総数を取得して $num_maxrows に代入しました。
そこから、どういう式をつくればよいのかが分かりません。

かなり強引にやればできますが、普通はどういう式なのかを教えてくれると嬉しく思います。
0087nobodyさん2006/12/22(金) 18:38:23ID:???
>>86
85じゃないが。
たとえば1ページ30件と仮定し、全部で100件のデータがあるとする。
その場合、ページ数*30 でページ終端の番号が出る。
4ページ目で 30*4=120 となり該当件数を超えるので終端であることがわかる。

そのため「(ページ番号 * 表示件数) >= 最大件数 の条件が成り立つとき、
次のページへの遷移を作成しない」という条件が成立する。
あとはがんばれ。
0088nobodyさん2006/12/22(金) 18:42:48ID:???
蛇足
select でカウントを持ってくる場合、できるだけ pk の値を参照した方がいい。
若干だが負荷が下がる。
なけりゃあしゃあないが。
0089nobodyさん2006/12/22(金) 19:05:57ID:???
>>88
プライマリキーかどうかより、検索で使用頻度の高いindexかどうかが肝心。
プライマリ設定であっても実際のプログラムで使用頻度が少ないものだと
count(*)の方がまだ高速だったりするよ。
0090nobodyさん2006/12/22(金) 19:14:51ID:???
>>89
すま、まちがいた…<index と pk
まさに蛇足だった…。
0091nobodyさん2006/12/22(金) 20:17:08ID:n9VSwh4k
>>87
おぉ、なるほど! とってもありがとう。
0092nobodyさん2006/12/22(金) 22:15:19ID:???
<input type="text" name="a[b1]" value="1">
<input type="text" name="a[b2]" value="2">
<input type="text" name="d[e1]" value="8">
のようなデータをPOSTで受け取ると
それぞれ$a[b1][c1]、$a[b2][2]、$d[e1][8]のような形にし、
そこに同一の文字をセットしたいのですが、うまくいかずに困っています。

function alt_form($var, $set){
 foreach($var as $foo){
  foreach($foo as $key => $val){
   $tmp[$foo][$key][$val] = $set;  //$fooを入れることができずにerrorが出ます。
  }
  }
 return extract($tmp);
}
alt_form($_POST, "入れたい文字");

なにか解決策はないでしょうか?
0093nobodyさん2006/12/22(金) 22:37:33ID:???
>>92
そもそも、input要素のname属性にブラケット( [] )はアリなんだっけ?
http://bakera.jp/hatomaru.aspx/ref/html/attribute/name@input
0094nobodyさん2006/12/22(金) 22:45:08ID:???
name属性に[]は使えるよ name[] みたいにね
>>92のような使い方はしたことないけど
0095922006/12/22(金) 22:49:17ID:0IVErS6h
>>93
配列で受け取りたいときは、こうしないとできないと思って。
でもmixiのプロフィール変更の趣味の部分はname=hobbyで統一されてる・・
どうやって処理してるんだろう
0096nobodyさん2006/12/22(金) 22:58:12ID:???
>>92
お前、なんかすっげー間違ってると思う。
仮にお前が考えてる通りに実現できたとしても、すごく効率の悪いやり方。
なんでそんな複雑なやり方にしたいの?

もっと頭使ってシンプルにしな。
0097nobodyさん2006/12/22(金) 23:02:24ID:???

<input type="text" name="a[b1][1]" value="設定したい値">
0098nobodyさん2006/12/22(金) 23:21:53ID:???
>>92
無茶苦茶な設計だな。
0099nobodyさん2006/12/22(金) 23:23:58ID:???
>>92
おまえ学校でいじめられてるだろ
0100922006/12/22(金) 23:31:02ID:0IVErS6h
(´;ω;`)ウッ
出直してきます
0101nobodyさん2006/12/22(金) 23:33:45ID:???
>>95
チェックボックスの値の渡され方が判らないときはGETメソッドでリクエスト見てみ
渡された値の根本的な処理法が知りたい場合はperlの解説サイトとか見てみ
■ このスレッドは過去ログ倉庫に格納されています