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

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

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001nobodyさん2006/11/06(月) 22:07:16ID:???
PHPに関するくだらねぇ質問用スレです。ここならお前の下らない質問に回答があるかも知れません。

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

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

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

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

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

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークはそれぞれの該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
0857nobodyさん2006/11/20(月) 09:26:38ID:???
そうそう。他人の意見なんかに耳傾けず自分で全部調査しなさいね。
0858nobodyさん2006/11/20(月) 09:57:32ID:???
うちは Zend Optimizer + eAccelerator の同居で成功していると思うけどな
>>181 の5000までの素数ベンチプログラムで

平均3.20-3.25 位

環境は
Athlon2800
M PC3200-512 x 2

OS WinXP
Apache 2.0.59
PHP 5.2
Zend Optimizer
eAccelerator

参考までに
0859nobodyさん2006/11/20(月) 10:20:38ID:???
MySQLでsort というフィールドに一意性を持たせて
順番データを保持させようとしています。
指定行の「一個上に上がる」をクリックしたら、
そのデータのsortを-1して、
そのままだと同じ値になってしまう行データのsortを+1したいと考えています。

ところが一意性を持たせてあるので、
「そのsortを-1して、」という時点で、
一意性がないぜゴルァというエラーが出てしまいます。
指定行の-1と
別指定行の+1を同時に処理させる方法はないでしょうか?
0860nobodyさん2006/11/20(月) 10:48:14ID:a1LEez8m
一意性を持たせない
一回削除しといて再度INSORTするとか
0861nobodyさん2006/11/20(月) 11:40:49ID:???
配列1つを引数にとって配列を返す関数 return_array($array) があるとして、
その戻り値の最初の要素の値を取り出したいのですが、
 $result = return_array($array)[0];
と書くとParseErrorになります。
どう書けばよいのでしょうか?
0862nobodyさん2006/11/20(月) 11:47:33ID:???
>>861
$tmp = return_array($array);
$rsr = $tmp[0];
って書けば?
08638612006/11/20(月) 12:04:17ID:???
なるほど、やはり一度変数に入れるしかないのですね。
ありがとうございます。
0864nobodyさん2006/11/20(月) 12:04:47ID:???
>>858
実際のWebシステムでは、スクリプト本体よりもむしろ
サーバやDB入出力の部分がボトルネックになるので、
素数ベンチなんてほとんど意味がないけどな。
0865nobodyさん2006/11/20(月) 12:05:42ID:???
>>861
素直に$result[0]を使えば?
0866nobodyさん2006/11/20(月) 12:30:30ID:???
>>863
じゃあ
list($result, ) = return_array($array);
0867nobodyさん2006/11/20(月) 13:31:12ID:???
ありがとう。
08688592006/11/20(月) 13:40:57ID:???
>>860 さんの方法以外に良か方法なかとでしょうか
0869nobodyさん2006/11/20(月) 13:50:01ID:???
>>868
0をスワップ用にしといて片方を0にupdateしてから後2回updateするとか
08708592006/11/20(月) 15:13:58ID:???
>>869
天才を発見しますた
シンプルで楽層ですね、
ありがとうございます、その方法で行きます
0871nobodyさん2006/11/20(月) 15:33:46ID:???
いや最大で全件変えなきゃだめじゃん。
そういう関数作ったけど俺は。
0872nobodyさん2006/11/20(月) 15:53:05ID:???
>>859
一意性はスクリプト側で担保しろ。
別に難しいことじゃない。
任意のsortの値をINSERTかUPDATEする前に、
事前にSELECTしてみて存在するか否かを確認すればいいだけだ。
0873nobodyさん2006/11/20(月) 16:08:58ID:???
複数のレコードを一斉に変更してかつ一意を保とうとするなら
前後でのテーブルのLOCKを忘れるなよ。
0874nobodyさん2006/11/20(月) 16:34:42ID:???
オブジェクト指向PHPを意識しはじめたんですが、
肝心のオブジェクト指向がよくわからない・・・
従来のプログラムを、適当に部分部分でパーツ化して、
それをメソッドにすればいいんでしょうか?
オブジェクトにするメリットがわからない状態なので、
とりあえず適当にやってればそのうちわかるだろう程度に
考えているのですが、やっぱちゃんとした本買って勉強するべきですか?
0875nobodyさん2006/11/20(月) 16:59:23ID:???
>>874
とりあえず、この辺読んどけ
ttp://itpro.nikkeibp.co.jp/article/Watcher/20061117/254159/
0876nobodyさん2006/11/20(月) 17:25:55ID:???
焦らなくても、マニュアルを眺めていたらそのうち書けるようになる
0877nobodyさん2006/11/20(月) 20:11:41ID:???
書くのは慣れだけでいくらでもできるようになるが
設計はそれじゃいつまでもできるようにならんよ。
せめて他人が書いた(腐ってない)ソースを読むくらいしないと。
0878nobodyさん2006/11/20(月) 20:35:36ID:???
腐ってないソースを見つけるのが難しいんだけど・・・
0879nobodyさん2006/11/20(月) 20:38:05ID:???
さらに言えば、ソースが腐っているか否かを見極めるのがまた難しく、
それが出来るくらいの能力がある人なら既に設計能力も高いと思う。
0880nobodyさん2006/11/20(月) 20:47:59ID:???
結局、OOPの良書と言われている本を読まなきゃ駄目、でFA?
0881nobodyさん2006/11/20(月) 20:50:02ID:???
PEARなりフレームワークなりのソース読めばいいじゃん
0882nobodyさん2006/11/20(月) 20:57:28ID:zRxNwc2j
>>824です。
1,の部分を今作っています。
入力が正しいか確認するだけのプログラムですが作りました。

腐ったソースの話題の中で公開するのもあれですが
添削してほしいです。
よろしくお願いします。
http://onegaisiamsu.ojaru.jp/php3.txt
0883nobodyさん2006/11/20(月) 21:00:31ID:???
もう時代はAOPらしいけどね。
アスペクト指向だっけか?
アスペクトPHPとかそのうちくるんだろうか・・・
0884nobodyさん2006/11/20(月) 21:19:15ID:???
そしてコンポーネント指向、次にエージェント指向
0885nobodyさん2006/11/20(月) 21:20:30ID:???
念のため、AOPはOOPを補助するものであってサヨナラOOPってわけじゃない。
0886nobodyさん2006/11/20(月) 21:28:37ID:???
言わばただのフィルタじゃん、AOPって
0887nobodyさん2006/11/20(月) 21:30:15ID:BPin2pz1
mb_ereg系はデフォルトで^が改行直後、$が改行直前にもマッチするってあちこちで書かれてるけど、
実際やってみたらマッチしませんでした。
で、オプションでmを指定したらマッチするようになりました。

サンプルコード:
    echo mb_ereg_replace("^.", "", "123\n123") . "\n\n";
    echo mb_ereg_replace(".$", "", "123\n123") . "\n\n";
    echo mb_ereg_replace("^.", "", "123\n123", "m") . "\n\n";
    echo mb_ereg_replace(".$", "", "123\n123", "m") . "\n\n";
結果:
    23
    123
    
    123
    12
    
    23
    23
    
    12
    12
バージョン: 5.0.5

でもマニュアルには

> m を指定した場合、マルチラインモードとなり、 改行文字も "." に含まれるようになります。
(http://www.php.net/manual/ja/function.mb-ereg-replace.php)

としか書かれてません。

結局、デフォルトで^$が改行直後直前にマッチせず、mを指定するとマッチするようになるのが正しい挙動なんでしょうか。
それともこれはバグなのでしょうか。
0888nobodyさん2006/11/20(月) 21:48:35ID:???
あちこちってどこ?
0889nobodyさん2006/11/20(月) 22:30:16ID:efSEaAzM
PHPのモジュールをコンパイルしてインストールするに際に、phpizeコマンドが必要
ですよね?
それで、PHPマニュアルに「もし phpize コマンドが見つからない場合は、
適切な devel 版の PHP パッケージをインストールしましょう。 PHP や拡張
モジュールをビルドするために必要なヘッダファイルや phpize コマンドは、この
パッケージに含まれます。」
と書かれていたので、PHP-5.2.1-devをインストールしたのですが、phpizeコマンド
が認識されません。phpizeコマンドを使うためには他に何が必要なのでしょうか?
0890nobodyさん2006/11/20(月) 22:42:20ID:???
>>889
パスが通ってないだけでしょ多分
08918892006/11/20(月) 22:55:01ID:efSEaAzM
>>890
確かに、パスを通す必要があったようです。
しかし、WindowsでPHPを使っているのですが、パスを通すといっても
phpizeを使うためにはどこを指定すれば良いのか分かりません。
よろしければ、教えていただきたいのですが。
0892nobodyさん2006/11/20(月) 22:57:30ID:???
ぐぐったほうが早い
0893nobodyさん2006/11/20(月) 22:59:03ID:???
phpizeってwinなら関係ないかと
具体的に何を入れたいんだよ
08948892006/11/20(月) 23:04:45ID:efSEaAzM
>>893
PHPでNamazuを呼び出すためのモジュールです。
phpizeコマンドを使えるようにして、configure,makeはcygwinでやろうと
思ったんですが。
>phpizeってwinなら関係ないかと・・・windowsでは必要ないんですか?
0895nobodyさん2006/11/20(月) 23:09:42ID:???
またおまえか
ソースに付いてるREADME.WIN32-BUILD-SYSTEMは読んだのか?
0896nobodyさん2006/11/20(月) 23:11:56ID:???
ああwin用のPHPじゃなくてcygwinか、、、
でもcygwinでphp入れたならbinにphpize入ってないか?
0897nobodyさん2006/11/20(月) 23:13:50ID:???
>>894
linuxやcygwinでビルドしてもそれをwinのphpでは使えないよ
08988892006/11/20(月) 23:20:34ID:efSEaAzM
>>897
そ、そうだったんですか。。。
じゃあ、PHP自体もcygwinを使ってWindows用のではないPHPを入れなければ
いけないんですね?
0899nobodyさん2006/11/20(月) 23:28:15ID:???
>>898
うん、つーかcolinuxとかVMwareの方がいいと思うがcygwinなんかより
09008892006/11/20(月) 23:33:46ID:efSEaAzM
ありがとうございます。モジュール組込みの前に環境自体が
整っていなかったようですね。
0901nobodyさん2006/11/20(月) 23:56:43ID:???
初歩的な質問で申し訳ないのですが、
PHPをCronで実行する方法が判らなくて困っています。
どなたかご教授下さい。Fedora5です。
0902nobodyさん2006/11/20(月) 23:58:48ID:???
>>901
crontabにCLI版PHPで作ったスクリプトファイルをフルパスで登録してやるだけ。
0903nobodyさん2006/11/21(火) 00:02:57ID:???
CLI版PHPで作ったスクリプトファイルとは一体何でしょう(つд`;)
0904nobodyさん2006/11/21(火) 00:20:54ID:???
>>903
#!/usr/local/bin/php
<?php
 :
?>
みたいなスタイルで書いたスクリプト。
1行目でCLI(コマンドラインインターフェース)版としてインストールしたPHPのフルパスを書く。
0905nobodyさん2006/11/21(火) 00:39:44ID:???
もしくは、crontabに
/usr/local/bin/php スクリプトファイルのフルパス
って指定をするのもアリ。
これならスクリプトファイルのパーミッションを実行可にしなくてもOK
0906nobodyさん2006/11/21(火) 00:43:56ID:+Nuu4hvh
超初心者ですがWAMPでデータベースを作ろうとMySQL5.0.27、PHP 5.2.0をインストールしたのですが、
ふと気付いたら鯖(Xserver)のスペックが以下の通りでした。

PHPバージョン 4.3.9 ( セキュリティパッチ適用済 )
MySQLバージョン 4.0.26

これって、自宅鯖や他の鯖を使わずにあくまでも今使ってるXserverでDBを利用するなら、
インストールし直してPHP4.3.9・MySQL4.0.26の環境でDBを作成しないと駄目なのでしょうか?(´・ω・`)
0907nobodyさん2006/11/21(火) 00:59:00ID:???
>>906
駄目ってことはないけど、どこが違うのか常に意識しとく必要はある。
初心者ならインストールし直して揃えといた方が無難。
0908nobodyさん2006/11/21(火) 01:07:51ID:???
>>904
何度もすみません;

#whereis phpとやったら
php: /usr/bin/php /etc/php.ini~ /etc/php.ini /etc/php.d /usr/lib/php
となったのでcrontabに
0,10,20,30,40,50 * * * * /usr/bin/php [対応スクリプトへのフルパス]
とやったものの10分経過しても更新されずでした・・・
service crond restartもやったのですが駄目でした('A`)
0909nobodyさん2006/11/21(火) 01:16:42ID:???
それでどうしろと?
0910nobodyさん2006/11/21(火) 01:18:54ID:+Nuu4hvh
>>907
有難う御座います、インストールし直してチャレンジしてみます!
0911nobodyさん2006/11/21(火) 01:29:05ID:???
>>908
まずスクリプトが実行されたのかどうかを確認してみては?
スクリプトの先頭にファイルへのログ出力を入れてみるとか。
ちなみにコマンドラインで
/usr/bin/php [対応スクリプトへのフルパス]
を実行したらそれはちゃんと動くんだろうね?
特にカレントディレクトリには気をつけた方がいいよ。
試しにrootディレクトリ上で実行してみるといい。
0912nobodyさん2006/11/21(火) 12:25:05ID:???
function dt ($method='select') {

$array = $this->$method();
}

こんな感じで因数内の文字列を使い、
メソッドを呼び出すと、エラーが出てしまいます。

Fatal error: Method name must be a string in

これはあきらめるしかないんでしょうか・・・
0913nobodyさん2006/11/21(火) 13:04:27ID:???
いんすう!?
0914nobodyさん2006/11/21(火) 13:06:16ID:???
なんかデジャブ・・・764か?
call_user_func()使えば。

あと因数でなく引数な。
0915nobodyさん2006/11/21(火) 13:12:38ID:???
>>914
ありがとうございます
0916nobodyさん2006/11/21(火) 13:14:44ID:???
>>912
$method ってちゃんと文字列になっているの?
0917nobodyさん2006/11/21(火) 16:00:58ID:???
nullか何かだろうな。変だと思ったらvar_dump()しろよ
0918nobodyさん2006/11/21(火) 16:25:26ID:bLvv9/Ln
class Hoge{
  function A() { }

  function B() {
    function C() { }
  }
}

上記の場合、

B ( )の中からA ( ) を呼び出すには
$this->A()

ですが、

B ( )の中からC ( ) を呼び出すには
どう記述すればいいんでしょう???
0919nobodyさん2006/11/21(火) 16:30:48ID:???
functionをネストした場合実行時の定義になるから
B()をコールした時に普通にグローバル関数としてC()が定義されるはず
09209182006/11/21(火) 16:34:42ID:???
>>919
天才サンクス
0921nobodyさん2006/11/21(火) 17:28:27ID:???
>>912
function dt ($method = 'select') {
$array = call_user_func(array($this, $method));
}
試してないから動かないかもしれないけど...
0922nobodyさん2006/11/21(火) 17:30:03ID:???
>>914,921
call_user_func()でも可変関数でもどっちでもいいんじゃないの?
09239212006/11/21(火) 17:40:18ID:???
>>922
シングルトンパターンで、クラス内でオブジェクトを生成するときなんかは
$class = __CLASS__;
return new $class();
みたいにすると楽チンだよな。
0924nobodyさん2006/11/21(火) 17:46:22ID:???
912のコードをcall_user_func()を使って書き換える意義は何か、という意味なんだけど
0925nobodyさん2006/11/21(火) 18:02:58ID:???
諦めるよりは意義あるんじゃね
09269212006/11/21(火) 18:02:59ID:9jzN//PM
>>924
とりあえず、$methodにnullぶちこんでも警告が出るだけでエラーにはならなくなる。
0927nobodyさん2006/11/21(火) 18:09:01ID:???
>>925
まあその程度の話か
0928nobodyさん2006/11/21(火) 18:41:14ID:???
「とりあえずそれで動いた」な対策は、phpがアップデートしたときに、
謎の不具合現象が発生し意図した動作をしない!どこだ、何だ!と
悩むことになるでしょう...。
0929nobodyさん2006/11/21(火) 18:48:12ID:???
クラスの関数に比べての優位性がよくわかりません、
プログラムを車にたとえば、
クラスはタイヤ、と表現してる本とかありますが、
それは関数も同じでは・・・?

単一関数で片付けられないようなものは
クラス、という認識を持ってるのですが間違ってますよね?
0930nobodyさん2006/11/21(火) 18:53:51ID:???
関数はギアボックスの中の歯車でクラスはギアボックスの事を言う
タイヤだとどちらでも良いイメージだな
0931nobodyさん2006/11/21(火) 19:00:10ID:???
スレ違いだけどタイヤはどう見ても式じゃない
0932nobodyさん2006/11/21(火) 19:00:11ID:???
いや、俺らのレベルが高いんじゃなくてキミのれべry
0933nobodyさん2006/11/21(火) 21:31:39ID:PV0heR9Q
定型の決まった文字を、自動的に2chの掲示板に書き込んでくれるようなソフトって作れますか?
0934nobodyさん2006/11/21(火) 21:33:20ID:???
次の質問どうぞ
0935nobodyさん2006/11/21(火) 21:43:54ID:???
メソッドがタイヤ
って書いてるんじゃないか?
0936nobodyさん2006/11/21(火) 21:53:55ID:???
GD使って棒グラフを生成したいのだが、どっかにライブラリ落ちてない?
0937nobodyさん2006/11/21(火) 21:56:00ID:???
ぐぐれば出てくるんじゃないの
jpgraphとかpearのimage_graphとかsparklineとか
0938nobodyさん2006/11/21(火) 22:42:42ID:d5GN+nTA
windowsXPにapache1.3とphp4.4です。
初期設定の段階なんですが<?php phpinfo(); ?>
がブラウザでそのまま表示されます。
どこが悪いんですか?
0939nobodyさん2006/11/21(火) 22:44:12ID:???
頭ですね。手遅れです。
0940nobodyさん2006/11/21(火) 22:54:35ID:???
そりゃ大変だ
0941nobodyさん2006/11/21(火) 22:55:24ID:???
>>938
httpd.confに
AddType application/x-httpd-php .php
09429832006/11/21(火) 23:02:05ID:d5GN+nTA
httpd.confに
AddType application/x-httpd-php .php入ってます
0943nobodyさん2006/11/21(火) 23:03:04ID:???
apache再起動
09449832006/11/21(火) 23:06:58ID:d5GN+nTA
再起動しました
0945nobodyさん2006/11/21(火) 23:16:57ID:???
LoadModule/AddModule
0946nobodyさん2006/11/21(火) 23:22:26ID:???
コマンドプロンプトから
format c:
0947nobodyさん2006/11/21(火) 23:39:34ID:???
>>946
自分のPCでやれよ、ボケ。
0948nobodyさん2006/11/21(火) 23:40:46ID:???
何も起こりませんでしたが何か?
0949nobodyさん2006/11/22(水) 00:31:40ID:???
非WindowsでPHP書いてる方は何人いるのかな?
うちはWindows使えない時だけだけど。。。
0950nobodyさん2006/11/22(水) 00:37:30ID:???
うちはむしろUNIX使えないときだけWindows。
0951nobodyさん2006/11/22(水) 02:16:11ID:3AXcb0+r
フォームで$_GETを使用したいのですが
セキュリティ上の不安があります。
たとえば、値が未入力であったり不正な場合
TOPページに飛ばしたいのですがどうすればよいでしょうか
0952nobodyさん2006/11/22(水) 02:20:40ID:???
if (empty($_GET['hoge'])) {
header("Location: http://www.orenopage.com/top.html";);
exit();
}
とか?
最近はこんなんもあるけど http://jp2.php.net/filter
0953nobodyさん2006/11/22(水) 02:26:10ID:???
format c:を打てば実行されると思ってるバカがいるスレですね。
0954nobodyさん2006/11/22(水) 02:27:21ID:aJWjKYEf
オブジェクト指向について教えてください。
0955nobodyさん2006/11/22(水) 02:29:16ID:???
>>954
PHP = オブジェクト指向でないから、スレ違い。。。火星にでも行ってろ
0956nobodyさん2006/11/22(水) 02:34:50ID:3AXcb0+r
>>952
わお ありがとうございます。未入力の場合はこれで解決しそうです。
あと、値にタグを入力された場合、表示が少しおかしくなるのですが
タグの無効化的なものはありますでしょうか
レス数が950を超えています。1000を超えると書き込みができなくなります。