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

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

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001nobodyさん2005/09/25(日) 02:03:45ID:nLUfPXhD
PHPに関するくだらない質問用すれです。
ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
次スレは>>970あたりが建てて下さい

・過去スレ
【PHP】くだらねぇ質問はここに書き込みやがれ
http://pc5.2ch.net/test/read.cgi/php/1099322141/
【PHP】くだらねぇ質問はここに書き込みやがれpart2
http://pc5.2ch.net/test/read.cgi/php/1105218084/
【PHP】くだらねぇ質問はここに書き込みやがれpart3
http://pc5.2ch.net/test/read.cgi/php/1107780435/
【PHP】くだらねぇ質問はここに書き込みやがれpart4
http://pc8.2ch.net/test/read.cgi/php/1110697712/
【PHP】くだらねぇ質問はここに書き込みやがれpart5
http://pc8.2ch.net/test/read.cgi/php/1114787573/
【PHP】くだらねぇ質問はここに書き込みやがれpart6
http://pc8.2ch.net/test/read.cgi/php/1117945031/
【PHP】くだらねぇ質問はここに書き込みやがれpart7
http://pc8.2ch.net/test/read.cgi/php/1121100429/
【PHP】くだらねぇ質問はここに書き込みやがれpart8
http://pc8.2ch.net/test/read.cgi/php/1123431535/
【PHP】くだらねぇ質問はここに書き込みやがれpart9
http://pc8.2ch.net/test/read.cgi/php/1125716012/
0852nobodyさん2005/10/14(金) 10:44:09ID:???
くだ質だから

これに尽きる
0853nobodyさん2005/10/14(金) 13:22:00ID:hq2CEuCn
include関数は負荷は高め?
0854sage2005/10/14(金) 13:22:54ID:/+ebJ9UK
841さん851さん、ありがとうございます。
くだらなさすぎて、スルーされるかと思いました。
参考書も買ったのですが、少し理解力に欠けまして・・・
もう少しがんばってきます。
0855nobodyさん2005/10/14(金) 13:35:54ID:???
テキストファイルで

佐藤
佐藤
鈴木
佐藤
田中
佐藤
田中

と言う感じで書かれている中から同じ名前が3つ以上ある者を
変数に持ってくるにはどうすればいいんでしょうか?
ほんと初心者ですいません・・・
0856nobodyさん2005/10/14(金) 13:51:01ID:???
>>855
1) file でテキストファイルを読み込んで配列に展開
2) array_count_values で 1) の配列を元に配列データと出現回数の連想配列を作成
3) 2) の連想配列から出現回数 >=3 をチョイス
0857nobodyさん2005/10/14(金) 15:42:30ID:???
>>856
すいません、小一時間悩んだんですが出来ませんで、
3) 2) の連想配列から出現回数 >=3 をチョイス 
の所を簡単に書いていただけないでしょうか?
0858nobodyさん2005/10/14(金) 15:47:38ID:???
つ [ foreach if ]
08598562005/10/14(金) 16:16:18ID:???
>>857
う〜ん、余計なお世話かもしれんが…
1)、 2) はまるまる答えを書いているようなもので、唯一 3) が
ロジック(と言うほどのものでもないけど)を考えるところだから、
ここを丸投げしなければならないのはプログラムを作る人としてはつらいかも。

3 回以上出現する名前が複数存在する場合を考慮して配列($achoices)に
格納した例が以下。絶対に複数存在しないのであれば、普通の変数でもいい。

<?php
$alines = file('test.txt');
$anames_counts = array_count_values($alines);

$achoices = array();

foreach ($anames_counts as $name => $count) {
 if ($count >= 3) {
// echo "$name<br>";     //debug
  $achoices[] = $name;
 }
}

print_r($achoices);
?>
0860nobodyさん2005/10/14(金) 16:31:00ID:???
ファイルが小さいなら
名前でソートしてforeach
3連続ヒットでピックアップ

でかいならwhileで一行ずつ読み
if (isset($count[$name])) $count[$name]++; else $count[$name]=1;
のように集計

もしくはDBに突っ込んで
SELECT name, COUNT(name) AS num FROM test GROUP BY name HAVING COUNT(name) > 2;
0861nobodyさん2005/10/14(金) 16:38:51ID:???
>>853
別に。
0862nobodyさん2005/10/14(金) 16:39:51ID:???
ちょっとワロタ
08638552005/10/14(金) 16:56:17ID:???
皆さんどうもすいませんです。
一応配列にはしなかったんですが>>859と同じようにしたつもりなんですが
出力されませんでした。
で、>>859をコピーさせて頂いたんですがやはり出力しません・・・

$anames_counts = array_count_values($alines);
print_r($anames_counts);

だとちゃんと出てくるので何だかよく分からなくなってしまいました。(@_@;)
ご迷惑かけて申し訳ありませんです。
0864nobodyさん2005/10/14(金) 17:06:12ID:???
>>863
おそらくテキストファイルの方がおかしいんじゃない?
ちゃんと1行に1つの名前にしてる?
ファイルのパス間違えてない?
08658552005/10/14(金) 17:17:07ID:???
>>864
新しくtest.txtで打ち直してやってみたんですが、
$anames_counts = array_count_values($alines);
print_r($anames_counts);
だと
Array ( [佐藤 ] => 4 [加藤 ] => 1 [山田 ] => 1 [飯田] => 1 )
で出るんですが、foreachの処理を入れるとやっぱり空白になっちゃいます
0866nobodyさん2005/10/14(金) 17:21:06ID:???
>>865
var_dump($achoices);
すると何てでる?
0867nobodyさん2005/10/14(金) 17:23:52ID:???
タイポだろ
0868nobodyさん2005/10/14(金) 17:25:17ID:???
いや、ifの前の空白のほうが目があるか
0869nobodyさん2005/10/14(金) 17:26:41ID:???
あー原因分かった。
そのままコピペしたんだろ?全角スペースが入っちゃってるでしょ。
全角スペースを消せばOKだ
0870nobodyさん2005/10/14(金) 17:26:58ID:???
>>868
それかと思ったがエラーが出るとは言わずに空白になるって言ってるからな。
0871nobodyさん2005/10/14(金) 17:29:14ID:???
>>870
コンソールじゃないんでしょ
んでerror_reporting(0)という
0872nobodyさん2005/10/14(金) 17:31:42ID:???
試してみた.全角混じってると parse error 出るね.
それ直したらちゃんと動いたよ.当たり前だけどww
0873nobodyさん2005/10/14(金) 17:35:38ID:???
fgets()でファイル全体を舐めずに途中にある一行だけを読む事は
可能でしょうか?
0874nobodyさん2005/10/14(金) 17:38:22ID:???
行の位置が分かればfseek()で可能
08758552005/10/14(金) 17:41:48ID:???
>>868-872
えー、全くお察しの通りでこちらでも動きました。
本当にご迷惑おかけしましたm(_ _)m
ご親切にしてくれた方、有難うございました。
0876nobodyさん2005/10/14(金) 18:18:00ID:???
JpGraphの日本語化について質問です。
http://www.asial.co.jp/products/jpgraph/japanese.phpを参考に変更もしました。
フォントを呼び出すにはどうすればよいのでしょうか?当然ながら$graph->title->SetFont(FF_PMINCHO);ではなりませんでした。
<?php
require_once("jpgraph/jpgraph.php");
require_once("jpgraph/jpgraph_bar.php");

$objGrh = new Graph(450,250,"auto");
$objGrh->SetScale("textlin");
$objGrh->title->Set("bbb");
$objGrh->xaxis->title->Set("ccc");
$objGrh->xaxis->title->Set("テスト");

$data=array(array(500,100),array(400,200));
$objPlot[]=new BarPlot($data[0]);
$objPlot[]=new BarPlot($data[1]);

$objPlot[0]->SetLegend('AAA');
$objPlot[1]->SetLegend('BBB');

$objPlot[0]->SetFillColor('[email protected]');
$objPlot[1]->SetFillColor('[email protected]');

$objGbp=new GroupBarPlot($objPlot);
$objGbp->SetWidth(0.80);
$objGrh->Add($objGbp);
$objGrh->Stroke();
?>
08778762005/10/14(金) 18:40:29ID:???
現在、9行目にだけテストと入れていますが
他のアルファベットの部分を日本語にしたいのです。
上の構文でもグラフは出力できますが、日本語の部分は文字化けしています。
0878nobodyさん2005/10/14(金) 18:46:29ID:???
スクリプトのエンコーディングが何か書いてないけど、
当然ながら
jpgraphに渡される文字列がUTF-8になっていますよね?
0879nobodyさん2005/10/14(金) 20:13:59ID:???
>>876
まだ、やってたのか…
0880nobodyさん2005/10/14(金) 20:51:06ID:???
テキストファイルなんかに書き込むときに
ファイルの最初にどんどん挿入していく方法ってありますか?

たとえば

1
2
3

とあったときに4を一番上の行に追加して

4
1
2
3

としたいのですが。
0881nobodyさん2005/10/14(金) 20:55:27ID:???
>>432
>>880

こいつら面白いな
0882nobodyさん2005/10/14(金) 21:00:25ID:???
ボケちゃったおじいちゃんカモシレナイよ
0883nobodyさん2005/10/14(金) 21:01:35ID:???
>>881
ワロスwwww
同じじゃねーかwwww
0884nobodyさん2005/10/14(金) 21:02:09ID:???
日本語理解できねんだろ
0885nobodyさん2005/10/14(金) 21:21:55ID:???
質問した俺もワロスww
0886nobodyさん2005/10/14(金) 21:24:45ID:???
よく読んだらちょっと違う。
俺の場合はDB使わずに、普通にファイル読み込んで、先頭の行に挿入するという方法が知りたいのです。
正規表現で ^ でリプレイスするというような方法しかないですか?
0887nobodyさん2005/10/14(金) 21:29:56ID:???
正規表現で置換とかどっから仕入れたネタですか
0888nobodyさん2005/10/14(金) 21:39:17ID:87Z0VpJT
ファイル削除について質問なのですが、このようにワイルドカードを使って
同名で別の拡張子のファイルを消す良い方法はあるんでしょうか?
ちなみにこれ↓ではダメでした…。

$del_file_name='/usr/local/apache/htdocs/img/'."img_001".'.'."***";
unlink( $del_file_name );
0889nobodyさん2005/10/14(金) 21:46:13ID:???
>>888
ライブラリ使わないとなると、globとかでリスト作って一個ずつ消すしかなさそう
``でシェル呼べばそれで終わりだけどね
0890nobodyさん2005/10/14(金) 21:56:45ID:???
>>888
マニュアルに参考になるサンプルって結構あるよね。
unlink

To delete files using wildcards:

<?
function delfile($str)
{
 foreach(glob($str) as $fn) {
  unlink($fn);
 }
}
?>
0891nobodyさん2005/10/14(金) 22:01:11ID:???
>>886
殆どのファイルシステムでファイルの書き込みは
良くてデータの追記ができるぐらいで、データ全体の置換が普通。
0892nobodyさん2005/10/14(金) 22:06:41ID:???
>>889>>890
やはりマニュアルを読破しないとダメですね…
ありがとうございます!。
0893nobodyさん2005/10/14(金) 22:06:54ID:???
ギャップを用意するとか分割するとか出来るけど
データ構造がわからんと何とも言えん。言えることは「DB使え」のみ
0894nobodyさん2005/10/14(金) 22:21:47ID:???
>>886
そんなアルゴリズムは捨てちまえ。

追加は、ファイルのけつにするもんだ。
0895nobodyさん2005/10/14(金) 22:25:33ID:???
頭が尻みたいな形の奴もいるけどな
0896nobodyさん2005/10/14(金) 22:30:45ID:???
>>886
追加は末尾にして,使うときに並べ替えるとか
0897nobodyさん2005/10/14(金) 23:18:42ID:???
input.phpの内容が↓な感じで

<FORM action="input.php">
<INPUT type="text" name="data1">
<INPUT type="text" name="data2">
<INPUT type="text" name="data3">
 :

input.php の中で data1〜n に入力ミスがないか調べた上で、
data1〜n に入力されたデータを output.php に送りたいのですが、
これは一体どうやれば良いのでしょうか?
header("Location:")を使うと値は渡せませんし…。

入力ミスがあった時は「エラー!! **個目のデータを入力し直して下さい」と表示し、
入力ミスがない場合は次のステップへ進む、という処理をしたいのです。
0898nobodyさん2005/10/14(金) 23:24:15ID:???
色色方法はあるが、とりあえずこの機会にセッション覚えたら
0899nobodyさん2005/10/14(金) 23:29:02ID:???
>>898
解答ありがとうございます。

セッション変数にそんなに多量の情報をブチ込んでも大丈夫なんですか?
ログインの過程でセッションを触ったので、セッション変数でのやり方なら分かるんですが、
何かスマートでない感じがして…。
0900nobodyさん2005/10/14(金) 23:41:17ID:???
>セッション変数にそんなに多量の情報をブチ込んでも大丈夫なんですか

具体的に
09018762005/10/14(金) 23:42:44ID:???
>>878
エンコーディングってファイルとして保存するときに設定するやつのことですか?
それなら、EUCと改行はLFにしています。
訳の分からないことを言っていたら、教えて頂けたらありがたいです。
0902nobodyさん2005/10/14(金) 23:43:13ID:???
<INPUT type="text" name="data1">
<INPUT type="text" name="data2">
<INPUT type="text" name="data3">
 :

と書きましたがこれが結構あるんです。最大で50個程度。
0903nobodyさん2005/10/14(金) 23:51:47ID:???
>>902
それがセッションにどういう問題を引き起こすのかってこと
0904nobodyさん2005/10/14(金) 23:53:41ID:???
表示部分を各phpファイルから独立させて、フラグ(ここでは入力チェックの合否)に応じて、
表示に使うファイルをincludeなりrequireなりするとややこしくならなくてよいような。

>>901
jpgraphに渡す文字列はUTF-8にしてあげてください。
0905nobodyさん2005/10/14(金) 23:56:39ID:???
>>903
と言う事はセッション変数に多量の情報を入れても大丈夫なのですね。
ありがとうございました。
0906nobodyさん2005/10/15(土) 00:00:18ID:???
>>905
それは実装次第だから分からんし保証もでけん
やはりこれを機にSession覚えたほうがよさそうだよ
0907nobodyさん2005/10/15(土) 00:09:58ID:???
>>904
これどっちが主流なんだろ
エントリポイント一つの方が作りやすいけど
フォワードするケース多いよね
0908nobodyさん2005/10/15(土) 01:17:43ID:???
ファイルの先頭に挿入する方法が現実的ではないらしいので、
ファイルの後ろに足して、あとから後ろから数行だけ読み込むって処理はできますか?
feofなんかで回して止まった時点の直近の配列数個とかいう手段以外でもっとスマートなやり方が
あればいいんですが、どうなんでしょうか。
0909nobodyさん2005/10/15(土) 01:30:39ID:???
>>908
自分が作ったファイルだけ相手にするんだったら一行の文字数を固定すると色々楽
0910nobodyさん2005/10/15(土) 01:32:38ID:???
>>908
>>874とか。ファイルの操作ならtailやtocを参考にしてみては

質問自体はFAQだけど、データ構造しだいだから解答しようがない
スマートにやりたいならスマートなアルゴリズムで扱える構造に設計するしかないよ
0911nobodyさん2005/10/15(土) 01:33:13ID:???
×toc
○tac
0912nobodyさん2005/10/15(土) 01:40:13ID:???
>>910
そりゃそうだ
データが分かってりゃもう出来たようなものじゃん
0913nobodyさん2005/10/15(土) 01:42:28ID:???
>>908
改行なんてものは単なる文字の1つなんよ。
言ってしまえば、aとかbとか他の文字とおんなじ扱いなので、
行を単位にして(その部分だけに)アクセスしたり編集(挿入・削除・追加 etc)する方法は無いんよ。
どうしてもやりたきゃプログラムを書く人が自分でやれってな感じ。
0914nobodyさん2005/10/15(土) 01:44:13ID:???
判りやすい説明だ。
0915nobodyさん2005/10/15(土) 01:51:20ID:lw7SpU92
書くときは末尾に追加して読むときは配列に読み込んで反対にすりゃいい
09168762005/10/15(土) 02:41:12ID:???
>>904
UTF−8で渡すとは、つまり、>>876を保存するときにUTF−8とLFで
保存すれば良いのでしょうか?それでしたら、もうやってみたのですが普通に文字化けしているのです。
0917nobodyさん2005/10/15(土) 02:45:58ID:???
904は
$objGrh->xaxis->title->Set(mb_convert_encoding("テスト", "UTF-8", "auto"));
ということをいいたいんじゃまいか?
0918nobodyさん2005/10/15(土) 02:52:10ID:???
もりあがっていこうよ!!
09198762005/10/15(土) 03:09:54ID:???
>>917
ご支援ありがとう。
$objGrh->xaxis->title->Set("テスト");の行の下に足してみました。
その後、上の行を消し代わりに入れてみました。
ですが、文字化けには全く変化がありませんでした。
0920nobodyさん2005/10/15(土) 03:29:01ID:???
SetFontした?

$objGrh->title->Set("bbb");
$objGrh->xaxis->title->Set("ccc");
$objGrh->yaxis->title->Set(mb_convert_encoding("テスト", "UTF-8", "auto"));
$objGrh->yaxis->title->SetFont(FF_GOTHIC, FS_NORMAL, 16);

xaxisのタイトルに2回Setしてるけど?
0921nobodyさん2005/10/15(土) 03:33:57ID:???
というか、876よく見たら
>フォントを呼び出すにはどうすればよいのでしょうか?当然ながら
>$graph->title->SetFont(FF_PMINCHO);ではなりませんでした。
これ
$graph->title->xaxis->SetFont(FF_PMINCHO);
じゃないの?
0922nobodyさん2005/10/15(土) 03:35:16ID:???
↑ごめん、間違えた
$graph->xaxis->title->SetFont(FF_PMINCHO);
09238762005/10/15(土) 03:44:59ID:???
>>920
していませんでした。先ほどの書き込みに習い8行目以降をそのまま
コピペしてみましたが、やはりなりませんでした。
設定ミスなど、どこか根本的なエラーがあるのでしょうか?
09248762005/10/15(土) 03:50:02ID:???
>>921-922
すみません。>>876で記載したURLに載っていたので、そのまま引用しました。
あの構文は、未だに全く理解できません。
0925nobodyさん2005/10/15(土) 04:17:10ID:???
876のURLの2、3と4は自分の設置したフォントのディレクトリを指定した?
1の通りにfontを解凍すれば問題ないと思うけどねぇ

バージョンでも違うみたいだから
http://www.gadgety.net/shin/tips/unix/php-gd.html
ここも参考に
0926nobodyさん2005/10/15(土) 04:42:07ID:8GPgJI8N
PHP4.4.0でも使用できるアクセレーターってありますか?
eアクセレーターはちゃんと動かないし、Zend Optimizerは未対応といわれて、動作しませんorz
0927nobodyさん2005/10/15(土) 12:47:45ID:???
>>908
1レコード1ファイルで連番付けて保存しとけば?
所詮テキストファイルで管理できる程度のレコード数なら無問題
0928nobodyさん2005/10/15(土) 12:57:38ID:???
とあるサンプルコードに
function hoge ($params, &$result) {
  ・・・
}
という記述がありました。

この &$result についている & の意味(効能)を教えてください。
0929nobodyさん2005/10/15(土) 13:04:02ID:???
マニュアルに書いてある
0930nobodyさん2005/10/15(土) 13:21:28ID:???
>>928
ドキュメントを読むか、簡単なプログラムを書いて自分で確認する癖を付けた方が良かっぺ。

<?php
function hoge ($params, &$result) {
$params = '1'; $result = '2';
}

$workparams = 'A'; $workresult = 'B';

hoge($workparams, $workresult);

echo "workparams = $workparams<BR>";
echo "workresult = $workresult<BR>";
?>
0931nobodyさん2005/10/15(土) 13:23:15ID:???
>>928
まあ一応リンクくらい貼っておきますか
http://www.php.net/manual/ja/language.references.pass.php
0932nobodyさん2005/10/16(日) 06:18:31ID:???
もし管理人が死んだ場合、サイトにその旨を表示させるにはどうすればいいですか?
どこを監視すれば管理人の生死について出来るだけ正確な判定できると思いますか?
09339262005/10/16(日) 06:42:28ID:???
自己解決しました。
4.4.0に合うアクセレーターは見つからなかったので、4.3.11のportsを拾って再構築してeAcceleratorを入れました。
0934nobodyさん2005/10/16(日) 06:53:31ID:???
>>932
知り合いに頼んでおくのが一番
0935nobodyさん2005/10/16(日) 07:01:48ID:J/3a2VXK
1カ月くらい更新してなかったら死亡用ファイルを更新なり読み込みなりすりゃいいんじゃないの。
0936nobodyさん2005/10/16(日) 07:31:21ID:???
一番確実なのは市役所の住記情報だな
アクセスできるかどうかはわかんないけど
0937nobodyさん2005/10/16(日) 09:27:28ID:???
ミケネコさんを
思い出しちゃった…合掌
0938nobodyさん2005/10/16(日) 11:43:02ID:RSZhtmwP

これもVIPクォリティ?
小学6年生の男女が裸体うp祭り中!!!

VIPになら小学6年生ぐらいは来てるだろ?
http://ex11.2ch.net/test/read.cgi/news4vip/1129427490/
0939nobodyさん2005/10/16(日) 12:04:18ID:???
PHPくだスレにVIPPERが多い件について
0940nobodyさん2005/10/16(日) 15:01:33ID:4AFyuy0O
test.php?query=aaa
の形ではなくて
test.php?aaa
のようなクエリーを受け取る方法を教えてください
変数はどんなんになるんでしょうか
0941nobodyさん2005/10/16(日) 15:03:48ID:???
>>940
ネタなら面白くない。

マジレスするなら$_SERVER['QUERY_STRING']
0942nobodyさん2005/10/16(日) 15:07:54ID:???
>>941
$_GETじゃないんですね
ありがとうございました
0943nobodyさん2005/10/16(日) 15:12:11ID:???
補足というか蛇足かもしれないけど,
PATH_INFOやmod_rewriteについてもそのうち調べてみれば?
test.php?aaa の ? なしにデータを受け取れるようになるよ.
0944nobodyさん2005/10/16(日) 15:16:36ID:???
>>943
こういうのがあるんですね、知らなかったです。
ちょっと検討してみます。
ありがとうございました。
0945nobodyさん2005/10/16(日) 15:38:00ID:???
>>943
PATH_INFO、俺だけかもしれんがちょっと使いづらい。
0946nobodyさん2005/10/16(日) 16:22:25ID:2l1eRJuS
教えてください。

perlでa〜zを配列に入れるばあい下記のようにすると思いますが
@a=('a'..'z');

phpではこのようなことできないのでしょか?

$a=array('a'..'z');

ってだめなのですが、他にやり方あるのでしょか?
0947nobodyさん2005/10/16(日) 16:39:33ID:???
きれいな感じなのはないんじゃない。forで回したりするくらいかね。
0948nobodyさん2005/10/16(日) 16:45:42ID:???
ここでトリッキーなコード登場

       ↓
0949nobodyさん2005/10/16(日) 16:47:48ID:???
$a = array();
for($i = ord('a'); $i <= ord('z'); $i++) {
    $a[] = chr($i);
}

var_dump($a);

C言語風だけどこれしかないんじゃないかな・・・
やったことないからしらねww
0950nobodyさん2005/10/16(日) 16:49:35ID:???
$s='abcdefghijklmnopqrstuvwxyz';
これを上手く使えんかな
0951nobodyさん2005/10/16(日) 16:50:51ID:???
特にトリッキーでもなかったので再挑戦↓
09529462005/10/16(日) 16:52:24ID:???
>>947-950
皆さんありがとう!

ごめんなさい自己解決してしまいました。
なんか

$a=range('a','z');

で行くみたいです。
レス数が950を超えています。1000を超えると書き込みができなくなります。