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

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

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

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

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

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

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

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0723nobodyさん2007/06/05(火) 22:14:46ID:???
>>721
iniなんたら多すぎ。
全部外して一つづ加えていって$_SESSION値を確かめろよ。
0724nobodyさん2007/06/05(火) 22:21:26ID:???
>>721
ココだけ見ると COOKIEが無いときは永久に通らないという罠
一行づつデバグしろよ

あと、/hogehoge/のパーミッションエラーとかはマジ勘弁
0725nobodyさん2007/06/05(火) 22:23:44ID:???
>>718
function bc_base_n2ten($num, $n) {
  $len = strlen($num);
  $result = ??
  for ($i=0; $i<$len; $i++) {
    $result = bcadd($result,
        bcmul(base_convert($num[$i], $n, 10), bcpow($n, $len - $i - 1)));
  }
  return $result;
}
function bc_base_ten2n($num, $n) {
  $len = strlen($num);
  $result = ??
  for ($i=0; $i<$len; $i++) {
    $surplus = bcmod($num, $n);
    $num = bcdiv(bcsub($num, $surplus), $n);
    $result .= base_convert($surplus, 10, $n);
  }
  return preg_replace("/^0+/", ??, strrev($result));
}
function bc_base_convert($num, $n, $m) {
  $num = bc_base_n2ten($num, $n);
  return bc_base_ten2n($num, $m);
}

PEAR探さばこういうのあるかもしれないけどシラネ
息抜きに作ってみたからちゃんと動作するかもシラネ
0726nobodyさん2007/06/05(火) 22:26:03ID:???
なんか化けてるしorz
??は上から
'0'
''
''
0727717 ◆.Ia5JkzwT6 2007/06/05(火) 22:26:49ID:EQxq7rXd
>>723-724
レス有り難う御座います
一行ずつ試してみたいと思います

パーミッションはミスってたらエラーメッセージが表示されますし、session_start()のみだと正常に動作するのでそれは無いと思います

早いですが、今日はもう寝るのでトリップつけておきます
0728nobodyさん2007/06/05(火) 22:41:18ID:???
ねるのはやいw
0729nobodyさん2007/06/05(火) 22:58:16ID:???
配列使う時
$hoge = array();
書かずにいきなり
$hoge[] = 'fuga';
って書くの行儀悪い?
0730nobodyさん2007/06/05(火) 23:03:17ID:???
>>729
気分次第、でも VB(option explicit) C JAVA とかと一緒でクセで初めに宣言してる
0731nobodyさん2007/06/05(火) 23:05:58ID:???
>>729
コーディング規約に従えばよろし
ないならフィーリングでおk
0732nobodyさん2007/06/05(火) 23:32:15ID:???
>>729
書き方次第でどっちもつかう
0733nobodyさん2007/06/05(火) 23:35:20ID:???
捨てコードじゃないなら、宣言しとくのが普通だろ。
0734nobodyさん2007/06/06(水) 00:11:14ID:???
Cで宣言してから使うのに慣れている人は
他人のソースを見るときでもそれを前提に読むからな

どっちでもいいと思うよ
おれは宣言してから使うけど
0735nobodyさん2007/06/06(水) 00:23:36ID:???
>>729
forとかifとかの中で
$hoge[] = 'fuga';
するなら、必ず
$hoge = array();
しておく。
0736nobodyさん2007/06/06(水) 00:27:49ID:???
>>729
たぶんDBのFetchループあたりのことだと思うけど、
そういうのわざわざ変数名変えたりしないから
初期化してないってのは怖いね。
0737nobodyさん2007/06/06(水) 00:48:44ID:???
初期化する必要がないほうが高級言語じゃないか?
別にPHPがそうとかいう話じゃなくて、プログラミング言語の発展としてさ。
いちいちプログラマの判断で変数宣言を書き込んで管理しなきゃならないなんて、前時代の遺産となるべきものじゃないかしら
0738nobodyさん2007/06/06(水) 00:52:31ID:???
初期化コードが近くにないと、
新しく使うのか、どこかから結果を引き継いでいるのかが分からないから
可読性のために俺は書く
0739nobodyさん2007/06/06(水) 00:54:27ID:???
$str = 'hoge';
echo $str[1]
---
o

こんな感じに、配列のように文字列から文字を切り出せるって
今日はじめて知ったんだがおまえら知ってましたか?
これ一般常識なの?
0740nobodyさん2007/06/06(水) 01:00:47ID:???
>>739
つかマニュアルに普通に書いてあるし
0741nobodyさん2007/06/06(水) 01:21:46ID:???
俺だけなのか…(゜◇゜)
0742nobodyさん2007/06/06(水) 01:28:32ID:???
自分と他人の世界や知識や価値観は違うってことが理解できない人?
0743nobodyさん2007/06/06(水) 01:39:49ID:???
>>739
しらなかった。
マニュアルのどこにかいてあったの?
0744nobodyさん2007/06/06(水) 01:40:29ID:???
>>743
そんくらい自分で見ればいいだろ
ほんと人にやってもらわないと何にもできない人だな・・・
0745nobodyさん2007/06/06(水) 01:41:48ID:???
>>739
なんじゃそれ!?
もしそれが本当なら、実は変数は全て配列型だってことか?
0746nobodyさん2007/06/06(水) 01:43:29ID:???
ちょうど>>725でも使ってるな
0747nobodyさん2007/06/06(水) 01:43:45ID:???
>>745
違うよ配列型が実は全て文字列型で構成されてるんだよ
0748nobodyさん2007/06/06(水) 01:44:10ID:???
>>737
変数のスコープを自在にあやつれるほうが高級、というか混乱しなくて良い
んなわけで初期化というか変数宣言(Perlだとmyとかlocalとかな)がないと困るZE☆
0749nobodyさん2007/06/06(水) 01:45:46ID:???
>>748
初期化の必要性と、変数スコープを自在にあやつれることは、別の問題だろ?
0750nobodyさん2007/06/06(水) 01:55:19ID:???
http://jp.php.net/manual/ja/language.types.string.php#language.types.string.substr
0751nobodyさん2007/06/06(水) 01:58:00ID:???
PHP+ImageMagickで、たまに画像アップロードができません。
アップロードできない画像は主にjpgです。
アップロードできるjpgもあります。
ファイルサイズも関係ないようです。
(ファイルサイズが大きめのjpgにもアップロードできるものがあった。逆に小さいjpgだができないものもあった)

昔も同じ症状に陥りましたがたしかphpの設定関係だった気がします。。
いったいどこが原因でしょうか?
07527512007/06/06(水) 01:59:12ID:b3J3b1x0
スマソage
0753nobodyさん2007/06/06(水) 02:00:53ID:???
jpegとpjpegじゃね?
0754nobodyさん2007/06/06(水) 02:07:41ID:???
>>749
スコープを決めるには変数宣言必要だし
変数宣言あるなら
my $hoge;
・・・
$hoge[] = 'fuga';
するなら
my $hoge = array();
・・・
$hoge[] = 'fuga';
のほうが "読みやすい" と思う。
だから俺は変数宣言は必須で初期化は任意でいいと思うけど
初期化してあるほうが「他の人が改修する時」とか。という感じだZE☆

phpの場合スコープいいかげんだから、初期化しといたほうが気配りさんじゃね
エディタの一画面で全部把握できるコードとかだったら俺も初期化とかしねーけどさ
07557512007/06/06(水) 02:15:59ID:b3J3b1x0
>>753
いえ、jpgです。
どうもPHPの設定じゃない気がしてきました。
うーん。
0756nobodyさん2007/06/06(水) 02:39:59ID:3mye17O+
PHP4のクラススタティックメソッドから同じクラスのスタティックメソッドを呼ぶ場合

class Hello {
  function hello() {
  echo "Hello, ", Hello::bar();
  }
  function bar() {
  return "world.";
  }
}

Hello::bar(); のようにいちいちクラス名を書いているのですが、
これを省略することはできますか?
0757nobodyさん2007/06/06(水) 02:43:49ID:0gT0vIE0
PHP4の構文について質問です。
あるオブジェクトを返してくるメソッドがfoo()があると仮定します。
その返されたオブジェクトがメソッドbar()を持っていたとき、
このメソッドbarを呼ぶには一度テンポラリ変数にオブジェクトを代入して、
改めてメソッドを適用しなくてはならないのでしょうか?

つまり、

 $tmp = foo();
 $tmp->bar();

と書くしかないのでしょうか。できれば

 foo()->bar();

のように一度に書きたいです。無理でしょうか。
0758nobodyさん2007/06/06(水) 02:50:53ID:oqXEdx16
PHP4とPHP5の両方で使えるものを開発したいのですが、
PHP4用と、PHP5用を分けて2つ作るか、
ソースに差がある部分を条件文で分けて1つだけ作るか
どっちにするか迷っています。
速度面を重視するなら、条件文がないほうが早いと思うので前者がいいですか?
互換性を保つため、PHP4の書き方で1つだけ作るという方法もありますが、
速度面でPHP5から導入された関数なんかも使いたいので、
それは今回なしの方向でお願いします。
07597512007/06/06(水) 02:52:21ID:b3J3b1x0
どうもお騒がせしました。勘違いでした(^^)
0760nobodyさん2007/06/06(水) 03:15:49ID:???
>>744
けちけちするなよ
0761nobodyさん2007/06/06(水) 03:17:31ID:???
バージョンの違いを条件文でいちいちわける理由は?
0762nobodyさん2007/06/06(水) 03:23:36ID:???
substrのsubって何の略?
0763nobodyさん2007/06/06(水) 03:35:50ID:???
>>762
ttp://www2.alc.co.jp/ejr/index.php?word_in=substring&word_in2=reedeirrf&word_in3=zJPa7DCxJ15687987t
0764nobodyさん2007/06/06(水) 03:36:26ID:???
if( !function_exists( 'hogehoge' ){
fucntion hogehoge()
{
}
}

ベタなのはこんなん?だけど複雑なのはめんどそう
0765nobodyさん2007/06/06(水) 03:42:04ID:???
>>763
単語だったのか
びっくり( ・_・;)
0766いつもの人 ◆3Htx6mDqZs 2007/06/06(水) 03:55:05ID:???
>>758
速度言ってるが、ベンチすらしたことなだろ

>>757
foo()->bar(); 4だと使えない?
call_user_func(array(foo(),bar))とか

>>756
self
0767いつもの人 ◆3Htx6mDqZs 2007/06/06(水) 03:57:26ID:???
ごめん情緒不安定だったから許して
0768nobodyさん2007/06/06(水) 04:05:02ID:???
何を?
07697582007/06/06(水) 04:40:45ID:oqXEdx16
>>761
DBを使う予定なのですが、
PHP4ではPDOが使えないので、分けようと思いました。
PDOは速度面キャッシュ効率などパフォーマンスに優れているので、
PHP5ではそちらを使いたいなぁと。
4でも5でも使えるPEARはパフォーマンスは悪いですし、
標準DB関数でもいいのですが、めんどくさくて・・・

>>766
ベンチはとってないです。というのもまだ着手してないので。
結構大きいものになる予定なので、
簡単なものを作って比較するのでは誤差も微妙で参考にならないと思い質問しました。
0770nobodyさん2007/06/06(水) 05:03:22ID:???
>>769
PDOは確かにね
DBの条件分岐だけならほんの少しで済むだろうし
別に作る必要は無いと思われ

条件文自体は何個あろうが変わらん(誤差以下
07717582007/06/06(水) 05:14:44ID:oqXEdx16
>>770
心強いアドバイスありがとうございます。
では該当部分は1ファイルにまとめて作りたいと思います。
早朝からわざわざありがとうございました。
0772nobodyさん2007/06/06(水) 08:29:01ID:???
pdoのあるなしだったらファクトリメソッドのパターンでも使ってみれば
0773nobodyさん2007/06/06(水) 10:25:01ID:jwkhTokv
簡単なアバターチャットを作ってみたいのですが
どこか、初心者でもわかりやすい
解説サイトありますか??
お願いします。
0774nobodyさん2007/06/06(水) 10:26:32ID:jwkhTokv
>>773
書き込む場所間違えた。
さーせん
0775nobodyさん2007/06/06(水) 10:50:10ID:xvgl2fqU
>>747
それは違うのではないでしょうか。
正しくは 「文字列型が実は全て配列型で構成されてる」 で、
簡単に言うと 「文字列は文字の配列」 ですよね?
0776nobodyさん2007/06/06(水) 11:18:36ID:???
文字が配列としてとりだせるってバグじゃないのかw
0777nobodyさん2007/06/06(水) 11:22:52ID:???
知らなかった。PHP使ってないけど。

$hoge = "PHP-kuso";
$hoge[3] = "\0";
print $hoge;

こうしたらどう表示されるの?
0778nobodyさん2007/06/06(水) 11:23:49ID:???
ためしてみてからきいてんの?
0779nobodyさん2007/06/06(水) 11:49:24ID:KZlHfOQY
最近、エディタを開いただけでやる気を喪失して、疲労感を覚えます
これは何という名前の虚弱生でしょうか?対処方法はありますか?
0780nobodyさん2007/06/06(水) 11:54:03ID:???
>>776
バグじゃないよ
マニュアルにもちゃんと書いてある仕様だよ
0781nobodyさん2007/06/06(水) 11:56:53ID:???
>>779
おれも、最近はオンラインゲームにどっぷりつかってプログラミングから遠ざかってる
0782nobodyさん2007/06/06(水) 12:18:54ID:???
>>779
糖尿病

>>781
俺もオンラインゲームにどっぷり
やっぱパソコン持っててオンラインゲームやってないやつってクズだよな
0783nobodyさん2007/06/06(水) 12:20:20ID:???
>>779
それはバグです
マニュアルにもちゃんと書いてある仕様だよ
0784nobodyさん2007/06/06(水) 14:04:24ID:???
>>779
俺なんてエディタのアイコンをダブルクリックする気力すら湧かないぜ!
0785nobodyさん2007/06/06(水) 14:06:18ID:???
だれか雑談スレつくって
0786nobodyさん2007/06/06(水) 15:13:12ID:y4bZ9a73
http://sv2ch.baila6.jp/chk_route.cgi?host=pc11.2ch.net
このプログラムなんですが、
ソースを見た限りではJavaScriptは使われていませんよね?
こういう、順番に取得した結果をリアルタイムに表示ようなものは、
PHPだけで出来ますか?
全て終わるまで応答が何秒も返って来ないプログラムの場合有効そうですよね?
0787nobodyさん2007/06/06(水) 15:18:59ID:???
キャッシュ切ってるだけです
0788nobodyさん2007/06/06(水) 15:52:07ID:???
>>785
いちおうあるよ。あまり使われてないけど。

【総合】 Webprog板質問雑談スレッド 1
http://pc11.2ch.net/test/read.cgi/php/1131016915/
0789nobodyさん2007/06/06(水) 15:52:36ID:???
>>786
<?php
echo "Hello\n";
ob_flush();
flush();
sleep(2);
echo "World\n";
?>
0790nobodyさん2007/06/06(水) 16:02:55ID:???
>>789
>>786じゃないが、普通に表示されたぞ
07917902007/06/06(水) 16:06:47ID:???
すまん、更新したらちゃんと2秒後に出てきたわ

function fluch_echo($str,$sleep=0){

ob_flush();
flush();
sleep($sleep);

echo $str;

}

fluch_echo ("Hello\n",2);
fluch_echo ("World\n",2);

こんなの作ってみたんだがどうだろ
0792nobodyさん2007/06/06(水) 16:11:53ID:y4bZ9a73
>>789-791
どうもありがとうございます。
こんな面白い関数があったのですねー
早速これをつかって色々遊んでみます。
0793nobodyさん2007/06/06(水) 17:04:22ID:???
>>792
ちなみに<table>タグ使ってるとでない。
これはブラウザの仕様。
閉じた段階で表示される。
0794nobodyさん2007/06/06(水) 17:11:50ID:???
>>793
じゃあ
ob_flush();
flush();
これは、ブラウザ側で処理しろって命令するってこと?
0795nobodyさん2007/06/06(水) 17:27:09ID:???
>>794
出力はいろいろなところでバッファリングされる
ob_flush( ) でPHPのバッファをApacheにフラッシュ
flush( ) でApache内のバッファをブラウザへ出力
<table>があると</table>が来るまでブラウザ内にバッファされて表示されない
0796nobodyさん2007/06/06(水) 17:38:59ID:???
>>795
サンクス
バッファについてはサッパリなのでちと勉強してきますわ
0797nobodyさん2007/06/06(水) 17:41:31ID:???
>>790
IEかな
IEは256バイト以下の出力はブラウザにバッファされるからHelloの前にダミーの文字を256文字出力しておけばいい
<?php
echo str_repeat("A", 256);
echo "<br>\n";
echo "Hello\n";
ob_flush();
flush();
sleep(2);
echo "World\n";
?>
0798nobodyさん2007/06/06(水) 17:43:37ID:sQx6t4Ws
比較演算子ってどっち使ってます?ANDとORそれぞれ。
|| か or か、 &&か and か。
0799nobodyさん2007/06/06(水) 17:46:16ID:???
条件式の変数が長い単語のときは読みにくいから || かなぁ
短かったり関数だったりする場合はorとかORとか書くかな
0800nobodyさん2007/06/06(水) 17:53:16ID:???
カタカナ多すぎてわからないが

>>ob_flush( ) でPHPのバッファをApacheにフラッシュ
これ以降の出力をメモリに格納

>>flush( ) でApache内のバッファをブラウザへ出力
今まで溜めたものを射精して、通常処理でFA?

あとネストってなにがネストってるんだ…
0801nobodyさん2007/06/06(水) 18:03:39ID:???
>>798
標準的には&&と||でしょ。
0802nobodyさん2007/06/06(水) 18:22:16ID:???
>>798
つかそれは論理演算子…。
優先順位が違うから基本的に&&||だね。
or exit()くらいにしか使わんなぁ。or exit()自体もほぼ使わないけど。
0803nobodyさん2007/06/06(水) 18:27:10ID:sQx6t4Ws
>>801
なんでですか?orはだめなの?
0804nobodyさん2007/06/06(水) 18:34:02ID:2+2ZUG2D
縁があって、自宅に方向幕と方向幕専用の装置(?)があるのですが、
この方向幕が何の電車(○○○系)に使われていたのか、知りたいです。

方向幕の装置は手で動かすハンドルが付いており、
電動式ではないようなので、かなりの年代物のようです。
印刷されているコマの駅は、山口県の一部(宇部・宇部新川・下関・厚東など)と、
日豊線の門司港〜大分間、鹿児島線の門司港〜川尻間、あと長崎線です。
幕の痛み具合から日豊線で使用されていた物のようなのですが、
それ以上のことは分かりません。
『急行』と書かれたコマがあるものの、多分普通電車の方向幕だと思います。
また、小郡が『新山口』となっていないので、やはり年代物でしょうか。

どなたかお詳しい方いらっしゃったら、どうぞ宜しくお願いします。
0805nobodyさん2007/06/06(水) 18:39:57ID:???
>>804
E723系ではないでしょうか?
0806717 ◆.Ia5JkzwT6 2007/06/06(水) 18:50:43ID:???
>>717です
一行ずつ検査して行った所、どうやらセッションの中身が空なのかどうかを判別せずに$sestmpで移していたのが不味かったようです。

session_start();
$sestmp=$_SESSION;
session_destroy();
session_id(md5(uniqid(rand(),true)));
session_start();
$_SESSION=$sestmp;



session_start();
if(isset($_SESSION["hoge"])){
$sestmp=($_SESSION["hoge"]);
}
session_destroy();
session_id(md5(uniqid(rand(),true)));
session_start();
if(isset($sestmp)){
$_SESSION["hoge"]=($sestmp);
}
に書き換えたところ上手く動作するようになりました。
なぜこんな所で動作の違いが生じたのかは解りませんが、とりあえず動作するようになったので報告させて頂きます。
有り難う御座いました。
08077792007/06/06(水) 18:54:27ID:???
みなさんのご教授も虚しく、今日のテストに間に合いませんでした
レスくれたみなさん、本当にありがとうございます
明日からは首にならないように皆さんの意見を取り入れ、こっそりオンラインゲームしようと思います
0808nobodyさん2007/06/06(水) 18:59:51ID:???
これはいい現代人ですね
0809nobodyさん2007/06/06(水) 20:17:55ID:???
>>779
欝じゃね、精神科いってこい。
いやマジな話、この業界多いから。
0810nobodyさん2007/06/06(水) 20:21:07ID:???
ただニートになりたいだけちゃうんかと。
0811nobodyさん2007/06/06(水) 20:25:39ID:???
趣味でPHPやってますが、今は立派なニートです
0812nobodyさん2007/06/06(水) 20:30:57ID:???
>>806
上手くいくも、めちゃくちゃだろそれ。
0813nobodyさん2007/06/06(水) 20:31:27ID:???
>>809
今かなり大きな仕事やってまして、主任を任されています
これさえ終われば・・・と思ってはいるのですが、このままでは本当に鬱病になりそうです
明日こそは頑張ってオンラインゲームじゃなかった仕事します
0814nobodyさん2007/06/06(水) 20:34:41ID:???
>>806
>session_id(md5(uniqid(rand(),true)));

なんでわざわざ、自前でこんな事やってんの?
PHPが発行してくれるセッションIDは十分に信頼できるランダム性を持ってるぞ。
0815nobodyさん2007/06/06(水) 20:36:40ID:???
>>811
よお同士。"そのうち"頑張ってPHPの仕事見つけような!
0816nobodyさん2007/06/06(水) 20:44:24ID:???
>>813
欝は表に症状が出たら手遅れだから
早めに病院いったほうがいいよ

> 明日こそは頑張って(略
典型的に欝になりやすいタイプだな……無理して2ヶ月休職とかなる前に手をうっとけ
あと がんばるな
0817nobodyさん2007/06/06(水) 20:44:33ID:???
rand()なんて使ってる童貞まだいたんだ
0818nobodyさん2007/06/06(水) 20:46:40ID:???
>>806
session.entropy_file = /dev/urandom
session.entropy_length = 32

これで十分
0819nobodyさん2007/06/06(水) 20:51:32ID:???
>>806は何がしたいのかまったくわからん
どうしたらこんなコピペみたいなソースが書けるんだ?
0820nobodyさん2007/06/06(水) 21:05:13ID:???
鬱やら情緒不安定てw
おまいらガンガレ!ガンガレ!超ガンガレ!

「頑張れ」って鬱には逆効果なんだっけ
0821nobodyさん2007/06/06(水) 21:45:54ID:???
>>820
頑張れ、は確か痴呆症の人に言ってはいけない言葉だったと思う。
鬱の人には、頑張れ、といってあげると気分が楽になると思うよ。
0822nobodyさん2007/06/06(水) 22:27:06ID:???
>>821
どういう釣りだよw
ワロタwww
■ このスレッドは過去ログ倉庫に格納されています