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

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2008/03/16(日) 17:23:27ID:???
まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り

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

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

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

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

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0427nobodyさん2008/03/29(土) 02:15:54ID:???
>>426
受け取って、>>425
0428nobodyさん2008/03/29(土) 02:18:32ID:???
パースする前にトリミングすればいいじゃん
0429nobodyさん2008/03/29(土) 02:25:05ID:???
そもそも、何でそんな警告が発生するんだろ。
XMLのencoding指定が正しくされていないとかいうオチ?
04304242008/03/29(土) 02:38:45ID:???
>>427>>428
いや、本来はそうしたいのですが、こちらとしては受けて側で、
勝手に仕様を変えられる立場にはないんです。
0431nobodyさん2008/03/29(土) 02:40:02ID:???
何を言ってるんだ?
04324242008/03/29(土) 02:45:12ID:???
>>431
抽象的な表現で誤解を与えてしまってすみません。
例えていいますと、私は流れてきた電波を映像に変換するテレビを作る立場の人間で、
テレビ局に、電波をハイビジョンで送ってくれとかノーマルで送ってくれとか、いう立場にないという意味です。
0433nobodyさん2008/03/29(土) 02:47:09ID:???
録画してCMカットする知能が無くて絶望した

file_get_contents()とかで取り込んでから加工しろ
ここまで言わないと分からないなんてどんな馬鹿だよ…
0434nobodyさん2008/03/29(土) 03:00:02ID:???
柔軟性が足りないということかなw
きっとURLをそんままぶちこんでるんだと思うよ
変数で受け取ってからゴミをとってそれからパースする
そのままぶちこまなくてもイインダヨ
04354242008/03/29(土) 03:18:20ID:???
>>433>>434
アドバイスありがとうございます。そういうことだったんですね。
そういう発想がなかったのですが、それならなんとかなりそうです。
遅い時間に、どうもありがとうございました。
0436nobodyさん2008/03/29(土) 05:10:26ID:???
$a = "abcdef";
echo $a."-ghijklmn";

とする場合と

echo "abcdef-ghijklmn";

の場合ではどちらが表示が早い、もしくは負荷がかからないのでしょうか?
0437nobodyさん2008/03/29(土) 05:12:27ID:???
変数にいれない分下のほうが早いが
ミリ秒とかマイクロ秒とかとてつもなく小さい誤差なので気にしなくていい
0438nobodyさん2008/03/29(土) 05:14:54ID:???
ちょwはやw
ありがとうございます

プログラム文自体が短い方が早いのかと思いましたがストレートに書いた方がいいのですね
0439nobodyさん2008/03/29(土) 06:13:04ID:???
プログラム文の短さなんて何の関係もねーよ
小学生乙
0440nobodyさん2008/03/29(土) 12:22:06ID:siokcgs9
echo time();
すごい時間かかる処理
echo time();

なぜか数秒しか立ってないんだけど
ちゃんと処理時間を割り出すにはどうすればいいのかしら
0441nobodyさん2008/03/29(土) 12:33:44ID:???
すごく時間のかかる処理って具体的にどのくらいだよ。
0442nobodyさん2008/03/29(土) 12:55:37ID:???
echo time();
for($i=0;$i<1000000000000000;$i++){echo time();}
echo time();
0443nobodyさん2008/03/29(土) 13:08:22ID:???
>>442
それだと、メモリーリークして最後まで実行できないよ。
0444nobodyさん2008/03/29(土) 13:08:41ID:???
printで表示するとき「 ' 」と「 " 」で文字列を囲めますが
どっちで囲んだほうがいいとかありますか?
0445nobodyさん2008/03/29(土) 13:18:51ID:???
「 ' 」は波平、
「 ''' 」はオバQ。
0446nobodyさん2008/03/29(土) 13:48:32ID:???
>>444
それぞれ用途が違う.
04474402008/03/29(土) 14:05:55ID:siokcgs9
違うサーバーから一件がつ
何百人分のデータを取得加工したり
レンダリングは数十分後なのに

5秒経過とか出る件について
0448nobodyさん2008/03/29(土) 14:28:22ID:???
phpのそのブロック間の処理時間は5秒で正しい
0449nobodyさん2008/03/29(土) 15:33:43ID:???
すごい時間かかる処理ってのがバックグラウンドで動いてるんでしょどうせ
0450nobodyさん2008/03/29(土) 16:16:00ID:???
>>444
まずマニュアルを探せ、そして読め
http://www.php.net/manual/ja/language.types.string.php
その上で質問すると自分のためになるよ
0451nobodyさん2008/03/29(土) 17:14:52ID:7xNaxr2G
PHP初心者ですが質問が

テキストデータがあります
1
3
7
12


みたいな感じで入っています。
そこから、データを整数型で読み出して
最大値を取り出すにはどうすればよいでしょうか?

ぐぐってみたものの分からず。
よろしくお願いします
0452nobodyさん2008/03/29(土) 17:21:41ID:???
>>451
マニュアル1度くらいは読もうよ
0453nobodyさん2008/03/29(土) 17:34:33ID:7xNaxr2G
>>452

すんません、一度読んでみます。

あと、もしよろしければお願いが。
一応プログラム載せてみますので
その間にもしまずそうな所あればご指摘願えませんか?

下記プログラムだと結果が12でなく7になってしまって
よろしくお願いします。

$fp=fopen("test.txt","r");
$num=0;
$makusu=0;
for($num=0;$num<10;$num++){
$tdata[$num]=fgets($fp,1024);
if($makusu<$tdata[$num]){
$makusu=$tdata[$num];
}
}
fclose ($fp);
0454nobodyさん2008/03/29(土) 17:43:23ID:???
phpがキッカケでこの業界に入ったのが、3年前の今頃。
金が良かったこともあって、流される感じで時間を過ごしてしまった。

が、振り返ると、人から言われたことをそのまま翻訳するだけの流れ作業的仕事。
自由な発想で作りたかったけど、一度もそのような機会が恵まれず、昨日付けて会社を退職しました。

来月から、大学の先輩を頼って監査法人に入ります。
数年後には、公認会計士を目指して頑張ります。

このスレは、仕事で分からなかったときに何回がお世話になりました。
本当にどうもありがとうございました。
0455nobodyさん2008/03/29(土) 18:13:18ID:???
俺が作るとしたらこんな感じだな
条件が書かれていないから考えられる中でのシンプル

$csvdata = file("./test.txt"); //textを配列に取り込む
sort($csvdata,SORT_NUMERIC); //配列の値を数値として並び替え
echo '最大値:'.end($csvdata); //数値として並び替えしているから配列の最後の値を表示

>>453
それは数字ではなく文字列で比較しているからだな
1 と 7 の文字の場合7の文字コードの方が大きい
if($makusu<((int)$tdata[$num]){

とでもして試してごらん

0456nobodyさん2008/03/29(土) 18:25:10ID:???
>>455
キャストでtypoしてるよ。

× if($makusu<((int)$tdata[$num]){
○ if($makusu<(int)$tdata[$num]){

>>453の微笑ましいロジックのまま対処してるとこに和んだ。
0457nobodyさん2008/03/29(土) 18:38:41ID:???
>>456
フォローサンクス
typoはよくやるんだよなぁ…この癖を直さないとなぁ

とりあえずなぜその結果が出たのか?の疑問だったからなぁその部分だけ解決する方法をね
あとは試行錯誤してコードを直していくのが自分のレベルアップの為だと思うし
0458nobodyさん2008/03/29(土) 19:15:19ID:???
$makusuて
04594402008/03/29(土) 20:52:41ID:siokcgs9
処理はバックグラウンドって
そんなバカな
0460nobodyさん2008/03/29(土) 21:54:44ID:???
$aaa[0] = array( "abc"=>"123","def"=>"456");
$aaa[1] = array( "AAA"=>"123","BB"=>"456");

こういう配列で$aaa[0]の一番最初のabcは$aaa[0][0]ではないのでしょうか?
うまくとりだせません
0461nobodyさん2008/03/29(土) 22:08:51ID:???
$aaa[0]["abc"]
0462nobodyさん2008/03/29(土) 22:10:32ID:???
>>460
意味わかんないのに "abc"とか書くなって
頼むからマニュアルか入門サイトか入門本でも見てくれ
0463nobodyさん2008/03/29(土) 22:40:12ID:TG/x4Siy
!$a
$a == null
is_null($a)

の違いがわかりません
動作的には全部一緒の動作をするようですが
どう違うのでしょうか?
0464nobodyさん2008/03/29(土) 22:48:13ID:???
>>463
それを説明するのはむずかしい
全部状態が0なんだよ
$a == false
$a = 0
なんかも
0465nobodyさん2008/03/29(土) 23:35:26ID:???
>>463
とりあえず試してみた。
!$a は$aが0や'0'や空文字列やfalseの時にも真になる。
$a==null も同様。

is_null($a);は$aがnullのときだけ真になる。
$a==nullも同様。
04664652008/03/29(土) 23:36:05ID:???
ミスった。最後は
$a===null ね。
0467nobodyさん2008/03/29(土) 23:37:10ID:???
is_nullは違うだろ.emptyなら同じだが
0468nobodyさん2008/03/29(土) 23:54:09ID:7xNaxr2G
453です。

すいません、お礼がすごく遅くなりまして。。

みなさんのおかげでなんとか解決できました。
本当にありがとうございます。
0469がぐゆき2008/03/30(日) 00:36:27ID:OfxxBLHH
質問させてください

変数に入っているtextを一行ずつ処理したいのですが
どうしたら宜しいでしょうか???

ファイルを読み込んで一行ずつ処理する方法は沢山ありますが
変数内のtextの処理は見つかりませんでした…

ご教授よろしくお願いいたします。
0470nobodyさん2008/03/30(日) 00:38:19ID:???
explode("\n", $text)
0471nobodyさん2008/03/30(日) 01:17:19ID:???
>>470
サンクス

でもその後も欲しい…

foreach($sub_text as $text){
処理
処理
処理
}

でいいのけ???
0472nobodyさん2008/03/30(日) 01:19:11ID:???
だめだぴょん
0473がぐゆき2008/03/30(日) 01:21:01ID:OfxxBLHH
>>472
ぴょんじゃねーよwww

おしえてくだしあwww
0474nobodyさん2008/03/30(日) 01:51:39ID:???
自分の頭使って考えろボケカス
0475がぐゆき2008/03/30(日) 02:12:14ID:???
自分で考えた結果やっぱりこうなったぉ???

foreach($sub_text as $text){
処理
処理
処理
}

今の所うまくいってるみたいだけど…?

もっとスマートというか…セオリーがあったら
nobody大先生に教えてもらいたいぽ…

0476nobodyさん2008/03/30(日) 02:14:12ID:???
二度と来ないで下さい。
次の質問よろ。
0477nobodyさん2008/03/30(日) 02:57:50ID:xDq/YOeJ
プログラムをいろいろと拡張する中で使用する自作関数が増えてきたのですが、
大量の関数をうまく扱うコツなんかはないでしょうか?
0478nobodyさん2008/03/30(日) 03:19:53ID:???
本当にそんなに自作関数が必要か客観的に見直してみる。
0479nobodyさん2008/03/30(日) 04:18:46ID:???
>>478
自作関数は必要でしょ。どの言語体系でも関数を自作で作られる機構は用意されているし、
世の中ビルトイン関数だけで片付くものじゃない。
素人かな?
0480nobodyさん2008/03/30(日) 04:28:44ID:???
自作関数そのものが要らないとは言ってなくね?
1度しか使わないうえに数行で書き直せるようなコードがガッツリ関数化されてたなんてのは良くある話

同じような系統の処理をクラスに纏めるとか、命名規則とか、ちゃんとコメントを入れるとか
1年後に見ても何をする関数なのかすぐ理解できるような書き方をしておくと扱いやすいかも知らん
0481nobodyさん2008/03/30(日) 04:33:45ID:???
>>479
ワラタ プログラミング学び始め3ヶ月の初心者乙w
0482nobodyさん2008/03/30(日) 04:50:10ID:???
>>480
>>478は、見直してみろって言っているが、暗に自作関数は要らないと言っていると思うんだが。
後半は、同意。

>>481
3ヶ月どころか、3年を通り越して7年もやっているんだが。phpだけじゃないが。
0483nobodyさん2008/03/30(日) 04:56:45ID:???
>>482
とてもそうは見えないですよ。本当のところは3週間くらいかと思った。そもそも国語力が足りないんじゃないですか?

0484nobodyさん2008/03/30(日) 05:04:06ID:???
>>483
意味分からん。
phpはビルトイン関数が多いから、自作関数を作るのはビルトイン関数を
把握しきれていない証拠だといいたいのか?

ビルトイン関数はユーティリティー関係が充実しているのは確かだが、
それだけではシステムは組めない。
業務クラスを実装していけば、複数の業務で共通する処理を業務共通クラスとして外だしにすることもよくあること。

もっと、勉強してこい。
0485nobodyさん2008/03/30(日) 06:34:08ID:???
>>484はプログラミング初心者ではないと思うが、日本語初心者だろうとは思う
0486nobodyさん2008/03/30(日) 06:34:28ID:???
>>483
>>478は自作関数は要らない ではなく、関数化する必要が在る・無いを見極める事が必要って言っていると思う

関数化は作る時の作業効率だけではなく、他人が後からトレースする時の効率も考える必要があると思う
スパゲティコードもトレースに時間がかかるけど、関数だらけのもトレースに時間がかかる
自作関数の中にまた自作関数があって、その中に自作関数があって、やっている事は数行で1度しか呼び出しされない
とか…それが解るのはそのファイル内の処理を全てトレースして理解してからなんだよね
関数化やライブラリ化するのかそのバランスを見極める必要はあると思う
0487nobodyさん2008/03/30(日) 09:29:29ID:oSilb2mW
パスワードをハッシュで保存して、パスワードが入力されたらハッシュ化して比較しようと思っています。
ハッシュ文字列が長いので、ログのサイズカット目的で、
substrで7文字程度にカットしようと思うのですが、これで行った比較は正確なものと言えるでしょうか?
0488nobodyさん2008/03/30(日) 09:41:35ID:???
部分だけの比較でなんで正確だと思うんだ。
0489nobodyさん2008/03/30(日) 10:15:54ID:???
>>477
自分は単なる関数でもクラスのstaticメソッドにして整理してる。

>>487
正確はどうかは、ここで言う「正確」という言葉の定義による。
ログの目的にもよるけど、ログ出力するときだけカットするようにしたら?
0490nobodyさん2008/03/30(日) 10:24:41ID:???
数万文字程度なら黙って全部MD5にぶちこめ
0491nobodyさん2008/03/30(日) 10:32:48ID:???
>>490
md5で生成された32バイトの文字列が長いということではないの?
04924872008/03/30(日) 11:00:37ID:???
レスありがとうございます

>>488
言われてみればそうですね。ほぼ正確という言葉が正しかったですね。

フォーラムを作っていてトピックや発言を消せるようにパスワードをつけています。
DBを用いずテキストにログを保存しているため、ログが蓄積するとDBに比べ速度が遅くなります。
少しでも読み込む文字列を少なくするために、保存する時にハッシュ化したパスワードをカットしようと思った次第です。
アルゴリズムはビット長の長いwhirlpoolを使っています。

妥協して安全性には少し難がありますが、ビット長の短いものに変更したいと思います。
0493nobodyさん2008/03/30(日) 12:48:20ID:???
>>463
はい、マニュアルどうぞ
http://www.php.net/manual/ja/types.comparisons.php
0494nobodyさん2008/03/30(日) 18:18:33ID:???
$_SERVER["HTTP_CONNECTION"] って普通のブラウザ(携帯除く)なら必ず Keep-Alive になるのでしょうか?
スパムを防ぐのにこれを入れておくと、どういう不都合が考えられますか?
0495nobodyさん2008/03/30(日) 19:14:15ID:pBE7+GD1
すでに存在する関数「db_get」というのが読み込まれているのですが、それを無効化して、あらたに「db_get」という関数を定義することはできるのでしょうか?
他のファイルで旧「db_get」を使用しているため、古いのは残したまま、別のPHPでは新しいdb_getを実行したいのです。
なお読み込みは全て共通ファイルで読み込んでいるので、新しいPHPでも古いdb_getは読み込まれています。
やはり新しいほうを別の名前にするしかないでしょうか?
0496nobodyさん2008/03/30(日) 20:25:54ID:LU6QHGFg
iniファイルで文字を取得して出力しているのですが、
伸ばし棒のところで文字化けしてしまいます。
どうしたらいいでしょうか?
0497nobodyさん2008/03/30(日) 20:30:28ID:???
>>495
名前空間使えばできるけど現状では無理。
プレフィックスつけるかクラスに閉じ込めるのが現実的かと。
>>496
コード見せて。
0498nobodyさん2008/03/30(日) 20:37:26ID:LU6QHGFg
class page{
private $ini = "";
public function __construct(){
$this->ini = parse_ini_file("PHPdefine.ini");
}
public function vewheader(){
print $this->ini["bbs_title"];
}
}

↓PHPdefine.ini
bbs_title=アー
0499nobodyさん2008/03/30(日) 20:58:40ID:???
>>498
shift-jisやめれ
0500nobodyさん2008/03/30(日) 21:46:48ID:???
ばーかばーか
0501nobodyさん2008/03/30(日) 22:07:04ID:???
EUCかUTF-8あたりで保存するんだ。
0502nobodyさん2008/03/31(月) 00:21:19ID:???
ディレクトリにあるファイル数を確認し、0000x.incというファイル名前をキーに
降順で読み込む。また、10件以上有る場合は次ページ以降を作ってそちらに読み込む。

こんな感じのことできますか?
0503nobodyさん2008/03/31(月) 00:43:38ID:???
>>502
「0000x.incというファイル名前をキーに」
というところが意味分からん、何のキー?
0504nobodyさん2008/03/31(月) 01:00:09ID:???
>>502
「…ファイル数を確認し、」以降が全くわからん。

・あるディレクトリ内のファイル数を確認したい。
・ファイル名は "連番.inc" にしてある。ファイル名で降順ソートしたい。
・ソート後、ひとつずつファイルを読み込んで1件/1ファイルとして出力したい。
・最大10件/ページになるようにしたい(ので、ファイル数を確認した)。

自分のエスパーカではこれぐらいが限度だ。
0505nobodyさん2008/03/31(月) 01:13:18ID:???
>>503
そうですね。書いてても分かりませんでした。

>>504さんのおっしゃるとおりです!ビックリエスパーですorz

連番.incファイルを読み込みたいんです。
その内容はただのtableタグで書かれた表なんですが、データベースとか使えない
サーバーで、それ以前の問題の気もしますが。

・連番の数の大きいほうが、新しいファイルなので降順にしたい
・一つのページに表は10個読み込みたい。
・10個以上ある場合、次のページにいくようにしたい。

以上のことがしたいんだと思います。
0506nobodyさん2008/03/31(月) 01:20:16ID:???
ひとまず質問するならID出そうな、>>1読んでね
で、出来るかどうかなら「出来る」
0507nobodyさん2008/03/31(月) 02:25:45ID:???
プログラムの能力よりもコミュニケーション能力が如何に大切かがようやく分かったような気がする。
0508nobodyさん2008/03/31(月) 04:13:28ID:???
system()で
対話形式、たとえば、ssh でパスワード入力したいんだけど、
良い方法ないでしょうか。
単純に
system("ssh -phogehoge localhost")
としちゃうとパスワードがローカルユーザーに漏れてしまう可能性があるので。
05094952008/03/31(月) 08:55:13ID:aabaHexl
>>497
そうなんですか……
おとなしく接頭語をつけることにします。
ありがとうございました。
0510nobodyさん2008/03/31(月) 09:47:51ID:???
ttp://www.ipa.go.jp/security/awareness/vendor/programmingv2/contents/003.html
0511nobodyさん2008/03/31(月) 09:52:46ID:???
>>508
そういう場合、一般的には expect スクリプトを用意するんだけど、
sshだったらホストベースのRSA認証でログインするのがいいんじゃない?
とはいえ、信用できないユーザがいるホストからスクリプトでログインしたいとはなかなか豪快な話。
0512nobodyさん2008/03/31(月) 11:20:40ID:zaGfhvtn
>>505
方法は二つ
・各ファイルの情報を持つ親ファイルを作る。
・ファイル名を工夫する。ハイフォン等を用いてファイル番号と行数をファイル名とする。
0513nobodyさん2008/03/31(月) 11:40:30ID:???
ハイフォン(笑)
0514nobodyさん2008/03/31(月) 13:23:58ID:???
>>495
http://jp.php.net/manual/ja/function.runkit-function-redefine.php
とか使えばできる
ただこれは標準関数じゃないので
peclからインスコが必要
0515nobodyさん2008/03/31(月) 13:25:46ID:D840Cc+c
iniファイルの値を配列として取得することは出来ないでしょうか?
0516nobodyさん2008/03/31(月) 13:29:03ID:???
>>515
parse_ini_file
0517nobodyさん2008/03/31(月) 13:30:35ID:???
>>514
指定したクラスに新しいメソッドを動的に追加することもできるんだ。
前そんな話が出てたと思うけど便利だね。
0518nobodyさん2008/03/31(月) 13:46:22ID:D840Cc+c
>>516
parse_ini_fileの場合は連想配列で取得ですよね?
連想配列ではなくて、通常の配列で取得する方法を探しているのですけど
0519nobodyさん2008/03/31(月) 13:59:27ID:???
じゃあarray_values(parse_ini_file($filename))
0520nobodyさん2008/03/31(月) 14:37:58ID:???
>>518
教えてもらうほうが偉そうってすごいよなw
最近は質問系サイトの影響かと思っているが
0521nobodyさん2008/03/31(月) 14:40:30ID:???
質問スレは、質問者で成り立っているんだから、
ある程度傲慢でもしょうがないんじゃないの。

そんなことに、いちいち突っ込む奴がどうかと・・・
0522nobodyさん2008/03/31(月) 14:52:28ID:???
成り立ってるのはお互い様だろ
0523nobodyさん2008/03/31(月) 15:12:31ID:???
>>521
おいおい何言ってんだ。回答者で成り立ってんだよお前知障か。
質問者なんていなくとも誰も困らん。
0524nobodyさん2008/03/31(月) 15:19:28ID:???
>>523
両方だろ。馬鹿レスしていると、お前のチンチンちょん切るよ!
0525nobodyさん2008/03/31(月) 15:32:30ID:???
質問者以外はお帰りください(笑)
0526nobodyさん2008/03/31(月) 15:41:29ID:???
>>518
で,その問題はそれで解決したのか?
■ このスレッドは過去ログ倉庫に格納されています