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

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

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

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

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

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

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

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0514nobodyさん2008/02/18(月) 19:59:27ID:???
プログラム組んだ事無い人がPHPをするのはまずいですか?
まず何からしたら良いのか徹底的に指導願いします
0515nobodyさん2008/02/18(月) 20:00:09ID:???
もちろん Apache PHPはインストール済みです。
0516nobodyさん2008/02/18(月) 20:00:25ID:???
>>8
0517nobodyさん2008/02/18(月) 20:16:36ID:???
>>514
何から、ねえ。
別に公開しなけりゃ好き勝手に遊べばいいんじゃねーの。
てことでローカルホストでwebサーバ走らせる勉強から。レンタルサーバで馬鹿やると恥ずかしいだろうからね

公開サービスを目指すなら、危険性のある事をある程度は把握しといた方がいいな
ttp://www.atmarkit.co.jp/fsecurity/index/index_hoshino.html
なんかがまとまってて判りやすい方かな。
0518nobodyさん2008/02/18(月) 20:21:20ID:???
まずはこのスレのテンプレを見ることだな
0519nobodyさん2008/02/18(月) 20:22:46ID:???
見るんじゃなくて、*読んで* *理解する* 事だね。
0520nobodyさん2008/02/18(月) 20:22:55ID:???
>>514
まずプログラム基礎を理解するために、
ブラウザ以外の特別な環境が必要ないJavaScriptでちょっとしたもの書きながら勉強するのがお勧め。
JavaScriptがある程度理解できれば、その他の言語もある程度わかるはず。
とくに目標がないなら、PHPからはじめることはないからね。
0521nobodyさん2008/02/18(月) 20:32:05ID:???
>>514
このテキストのこの単語がわからないとか、この機能がわからないってのなら説明できる。
でも全部教えては無理よ。とりあえず>>1-8のテンプレ読んで、
あとは「PHP 初心者」あたりでぐぐって出たサイト一通り見てはどうだろ。
05225142008/02/18(月) 20:34:12ID:???
皆さんありがとうございます。
テンプレをじっくり読んできます。
05235142008/02/18(月) 20:38:02ID:YSts7gLU
ID表示しないといけないんですね。
失礼しました。
0524nobodyさん2008/02/18(月) 21:56:26ID:???
>>523
そのまま使うのではなく、自分で考える事が重要だ。
考えずに使ってたらおにいたんがハッキングしちゃうからな。
0525nobodyさん2008/02/18(月) 21:58:41ID:???
>>513
一緒じゃねーぞ
波括弧は文字列のオフセット指定
0526nobodyさん2008/02/18(月) 22:00:21ID:???
ハッキングwww
0527nobodyさん2008/02/18(月) 22:08:27ID:???
すみませんPOSTで送られてきたデータを変数に取り込むために

$HENSU[$a] = "".$_POST["$HENSU[$a]"]."";

↑の様に記述したのですが取り込むことが出来ません
具体的にどのようにすれば解決できるのかご教授お願いいたします
(※$aは1〜30まであります)



0528nobodyさん2008/02/18(月) 22:10:05ID:???
すみません変数の部分を書き換えるときに癖で$をつけてしまいました

正しくは

$HENSU[$a] = "".$_POST["HENSU[$a]"]."";
↑で取り込めません
0529nobodyさん2008/02/18(月) 22:10:32ID:Cm9tgJOR
上げ忘れ
0530nobodyさん2008/02/18(月) 22:14:01ID:???
>>527
extract($_POST);
var_dump($HENSU);
0531nobodyさん2008/02/18(月) 22:21:55ID:xGg4BipF
マルチバイト文字列のバイト数を求めるにはどうしたら良いのでしようか?
確実にstrlenがコールできるなら良いのですが
strlenはmb_strlenに置換されてたりする場合があるかと思うので、
とても不安です。
0532nobodyさん2008/02/18(月) 22:22:14ID:???
>>530
ありがとうございます
それを元に頑張ってみます
0533nobodyさん2008/02/18(月) 22:29:16ID:YSts7gLU
>>524
マニュアルをコピペしてそれを使うなという事でしょうか?
0534nobodyさん2008/02/18(月) 22:37:00ID:???
意味を理解した上でなら構わないよ
0535nobodyさん2008/02/18(月) 22:56:36ID:???
>>520
JavaScriptとPHPどっちが難しいと言われればJSのが難しかったなw
あれ色んな記述ができすぎるからプログラム初心者には向かないんじゃね?
0536nobodyさん2008/02/18(月) 23:02:24ID:???
PHPはオブジェクト指向が加わると難しくなる
言語の難易度はポインタとオブジェクト指向で決まる
0537nobodyさん2008/02/18(月) 23:05:36ID:???
>>535
JavaScriptはクラスが入ると混乱してくるよね。
0538nobodyさん2008/02/18(月) 23:07:59ID:???
JavaScriptでクラス?
ActionScriptじゃないのかそれ
0539nobodyさん2008/02/18(月) 23:13:39ID:???
>>538
JavaScriptに new というキーワードがあるの
しってるよね?
0540nobodyさん2008/02/18(月) 23:19:00ID:Ez7ZH7Qx
JavaScriptはクラスベースじゃない。
newがあるとか関係無いから。
0541nobodyさん2008/02/18(月) 23:23:05ID:???
>>539
所謂現状のJavaScriptはプロトタイプベース言語であってクラスベースじゃねーよ

もちろん仕様三版にもクラスって言葉は出て来るけどクラスベースな言語で言う「クラス」としてじゃない。
classって言葉自体は単なるFuture Reserved。

2.0仕様がクラスベース言語として生まれ変わるバージョン。
タマリンや、ある意味での先行実装であるActionScriptが参考になる
0542nobodyさん2008/02/18(月) 23:24:55ID:???
本気でいってるの?
JavaScriptはオブジェクト指向言語なんだけど。
0543nobodyさん2008/02/18(月) 23:26:53ID:???
だからオブジェクト指向言語=クラスベース言語じゃねえ!w
0544nobodyさん2008/02/18(月) 23:30:47ID:???
基本的なこと学ぶだけならなんだっていいんじゃね?
ブラウザによっては動かなかったとしても、おおまかなことが学べればいいんだし。
変数の使い方、関数やオブジェクトの使い方、条件処理、ループ処理なんかの基礎的なことができれば。
0545nobodyさん2008/02/18(月) 23:35:35ID:xGg4BipF
いや、だからそんな自転車小屋の議論は良いから
strlenを確実に呼び出すにはどうしたらいいの?
っていうか

$foo="まこ"
$cnt=0;
while($foo as $dummy) { $cnt++;
0546nobodyさん2008/02/18(月) 23:38:51ID:???
ちょ、新言語作るなw
0547nobodyさん2008/02/18(月) 23:40:29ID:???
JS使いにはすごい引っかかる話題だけど、スレ違いなのよね
0548nobodyさん2008/02/18(月) 23:41:49ID:???
>>545
>>1
0549nobodyさん2008/02/18(月) 23:46:03ID:???
雑談は雑談スレ池。
0550nobodyさん2008/02/18(月) 23:48:14ID:???
>>549
>>1
05515312008/02/18(月) 23:50:28ID:???
取りあえずこれで解決することにしました
お邪魔したし真下

<?php
function strbyte($str) { $cnt=0; while($str[$cnt]) {$cnt++;} return $cnt; }
$foo="マ○コabdアの川流れ"; $encs = array('sjis-win', 'eucjp-win', 'utf-8');
foreach ($encs as $enc) { var_dump(strbyte(mb_convert_encoding($foo, $enc, 'sjis-win'))); }
05525142008/02/19(火) 00:05:59ID:OsGt77+r
関連サイト全部見てきました。
次から次へと新しい事を発見してキリがないなっ!と思いました。

某所でアップロードプログラムはセキュリティに気をつけてくださいってのがいまいち理解できなかったです。
今日は寝ます。ありがとうでした。
でわ
0553nobodyさん2008/02/19(火) 00:17:27ID:???
>>531
>strlenはmb_strlenに置換されてたりする場合があるかと思うので、
これホント?
0554nobodyさん2008/02/19(火) 00:25:27ID:???
>>553
>>531 じゃないけど、そうらしい。
http://jp2.php.net/manual/ja/ref.mbstring.php#mbstring.overload
0555nobodyさん2008/02/19(火) 00:26:17ID:???
>>553
http://jp2.php.net/manual/ja/ref.mbstring.php#mbstring.overload
05565312008/02/19(火) 00:31:38ID:???
>>551ではうまく行かなかったです
これでいいっぽいです
失礼しました
http://jp2.php.net/manual/ja/ref.mbstring.php#55832
function str_sizeof($string) {
return count(preg_split("`.`", $string)) - 1 ;
}
05575532008/02/19(火) 01:15:18ID:???
へえぇぇ
知らなかった。ありがとう。
0558nobodyさん2008/02/19(火) 01:28:40ID:???
>>556

return count(preg_split("`.`", $string)) - 1 ;

rerurnの後のいろいろ処理を付け加えるのは美しくない!
見にくい!

count関数の中に関数いれるのは
処理が重くなる、美しくない

何でもかんでも1行プログラミングにするな!

コーディングで考える優先順位

1.負荷
2.見やすさ

俺ならこう書く

$string = preg_split("`.`", $string);
$string_count = count($string)-1;
return $string_count;
0559nobodyさん2008/02/19(火) 01:33:35ID:???
>>558
公式に書いてあるのはそれがシンプルだってことじゃない?
いちいち変数に入れる方が無駄だと思うし、処理を一括できるほうが美しいと思う。
処理の意味も関数名でわかるし。
0560nobodyさん2008/02/19(火) 01:33:39ID:???
この場合は1行で正解だろ常考
0561nobodyさん2008/02/19(火) 01:41:14ID:???
>>559
これで速くなる(負荷が軽くなる)理由がわからん。
0562nobodyさん2008/02/19(火) 01:42:28ID:???
>>561 訂正
>>559 は >>558アンカーミス。すんません。
0563nobodyさん2008/02/19(火) 01:50:02ID:???
中間言語に置き換えるときに最適化みたいなのが動いて
実際の実行時は同じってことはないのかね??

といいつつも、複雑な1行だと却って構文解析?の時間がかかりそうな気がする
オレがいる。
0564nobodyさん2008/02/19(火) 01:59:27ID:???
俺もわざわざ変数増やすのがキモくて無駄に感じるなあ
括弧連鎖が嫌なら複数行に開くし。

スコープ次第では実行時解釈で縮まるんだろうかね。
0565nobodyさん2008/02/19(火) 02:03:15ID:???
string_countて見やすくて分かりやすくていいねw
05665582008/02/19(火) 02:15:19ID:???
チームで作業したことのない
低脳土方職人にはわかるまい
わかりやすい変数にいれて、みやすくしても処理速度は0.000001秒くらししか変わらん
見にくいコードにによる全体的な作業ロスを考えろ
俺はチーム作業が多いから
見易さ重視になってるし
みにくいコードにわかりやすくコメントまで付けてるよ

0567nobodyさん2008/02/19(火) 02:15:48ID:???
大抵はオーバーロードされてないんだろうが絶対じゃないのはすっきりしないな。
そのために正規表現で分割してその数カウントしてバイト出すするなんて無駄にも程がある。
05685582008/02/19(火) 02:18:32ID:???
関数の中に関数を沢山いれるのはみにくい
最高でも2個くらいまでにしてくれ
0569nobodyさん2008/02/19(火) 02:19:04ID:???
可読性をそんな自慢げに言われても困る。
そんなことはいちいち言うことじゃない。基本だ。
そして、>>558は可読性の面においてもあんまり必要ないんじゃないの?って話だ。
自分のルールに反論されたからって喧嘩腰で返すのは子供だ。
0570nobodyさん2008/02/19(火) 02:22:53ID:???
retrun の後はできるだけ
返り値が一目で判断できる変数名にして欲しい
05715582008/02/19(火) 02:26:46ID:???
自分だけわかるコード書くと上司がため息つくんだよ
簡単にいえばバカでも、すぐわかるようなコードじゃないと
作業効率は落ちるんだよ
0572nobodyさん2008/02/19(火) 02:28:42ID:???
だからさ、自分トコのルールを全世界共通みたいに言われても困るって。
そーゆー書き方もアリだけど、一行で書くのもアリなの。
んなことでむきになってどうすんの。
05735582008/02/19(火) 02:32:31ID:???
自分トコのルールじゃないよ
複数人で共同作業すれば、どこでも同じ
ベストは誰が見ても一目でわかるコード
負荷がかからないなら、できるだけわかりやすいコードにした方がいいよ
0574nobodyさん2008/02/19(火) 02:38:33ID:???
どこでも同じなのは読めるソースにしようって部分だろ。
return の後を変数にするか関数で一行で書くかは場合によりけり。
一行で書けるコードをわざわざ代入連発するより、一行で書いてコメント添えるだけでも通じる。
負荷が少ないからといってリソース使いまくっていいわけでもない。
俺ルールの押し付けもほどほどに。あともうこの話題はスレ違い。
0575nobodyさん2008/02/19(火) 02:39:57ID:???
>>558へ
夜遅くまでご苦労様
とだけ言っとく
0576nobodyさん2008/02/19(火) 02:41:14ID:???
>>559
同意。全然汚くない。
これが汚いのならPEARのソースは悲惨なことになる。
百歩譲って見にくいというなら、俺ならpreg_match_countとか新しい関数を定義し
return preg_match_count($str, "`.`");
とする。
チームがどうとか上司がどうとか誰も聞いていないし聞きたくない。
そんなに見にくいならLispでも覚えるか、新しい眼鏡買ったらいいんじゃね
05775582008/02/19(火) 02:48:05ID:???
>>574
趣味でサイト作りするなら
オナニーコード書いてる方がいいかもね
他人から見たオナニーコードほどきもいもんんはないよ
俺は相手を気遣ってコードを書いてるから
どうしても複雑なコードになってしまうときは
かなりわかりやすくコメントを書くよ
0578nobodyさん2008/02/19(火) 02:50:39ID:???
ああ、なんだいつもの荒らしか。
0579nobodyさん2008/02/19(火) 02:51:01ID:???
まぁ>>556が見にくいとか言うヤツとは一緒に仕事したくないな…
05805582008/02/19(火) 02:52:03ID:???
俺もたまには気持ちよくオナニーコード書きたいよな
0581nobodyさん2008/02/19(火) 02:53:32ID:???
まだやってんのかw。
05825582008/02/19(火) 02:54:39ID:???
自由気ままにコーディングできるっていいなあ
0583nobodyさん2008/02/19(火) 02:55:25ID:???
数日おきに荒らしにくるなこいつ。
まあ放置だ。今回はNGしやすい。
05845582008/02/19(火) 02:56:58ID:???
返り値を関数で返されたら一目でわからないからダメだ
しかも俺俺関数で返しやがったら最悪
0585nobodyさん2008/02/19(火) 03:14:28ID:???
関数か分からないんですね
05865582008/02/19(火) 03:49:50ID:???
$string = preg_split("`.`", $string);
$string_count = count($string)-1;
return $string_count;

1.見やすい
2.コード拡張しやすい


return count(preg_split("`.`", $string)) - 1 ;

1.見にくい
2.コード拡張しにくい

ちょっとしたコード拡張のために
わざわざ分解しないとけいない時間ロス
05875582008/02/19(火) 03:59:21ID:???
本来ならこう書くけどね

function str_sizeof($string) {
$string = "";
$string_count = 0;

$string = preg_split("`.`", $string);
$string_count = count($string)-1;
return $string_count;
}
05885582008/02/19(火) 04:00:51ID:???
間違えた
function str_sizeof($string) {

$string_count = 0;
$string = preg_split("`.`", $string);
$string_count = count($string)-1;
return $string_count;
}
0589nobodyさん2008/02/19(火) 04:32:57ID:???
しつこいわ。もう寝ろよ。
0590nobodyさん2008/02/19(火) 07:13:14ID:???
558に一票だ。
短く書いたら処理速度も速くなると勘違いする初心者が多くて困る。
0591nobodyさん2008/02/19(火) 07:20:51ID:???
>>586
$string = preg_split("`.`", $string);
$string = count($string)-1;
return $string;



$string = preg_split("`.`", $string);
return count($string) - 1 ;
05925312008/02/19(火) 07:35:36ID:???
>>566
すまん
スレだから短くしてただけで
普段はわかりやすい名前の変数に代入しまくりだよ
あと、>>556のコードはコピペだ
05935142008/02/19(火) 08:00:00ID:OsGt77+r
おはようございます。
0594nobodyさん2008/02/19(火) 08:27:59ID:???
どこに逝っても人間臭いスレはあるもんですね。
0595nobodyさん2008/02/19(火) 09:26:39ID:???
俺も558に1票だな
returnにはあんまり書きたくないな
0596nobodyさん2008/02/19(火) 10:15:05ID:???
荒らし頑張ってるなぁ。
0597nobodyさん2008/02/19(火) 10:27:12ID:???
PHPの変数への代入速度の遅さ知らないのかな?
ループ処理する場合は代入した方がはやいけどね。
0598nobodyさん2008/02/19(火) 10:38:21ID:???
そもそも難癖つけたいだけだからほっときなさい。
本当に仕事でやってる人がチームだの上司だのもっともらしい言葉使ってるけど出してる技術は低レベルだし
低脳土方、オナニーコード、他の方法全否定、暴言連発で仕事でやってる人の言葉じゃないのは丸わかりでしょ。
0599nobodyさん2008/02/19(火) 10:44:02ID:???
荒らし特有の連投と自演もだ。
0600nobodyさん2008/02/19(火) 11:02:23ID:???
558に加担するわけじゃないけど
returnにあれこれ長い処理してるコードは
あまりみないよ
ルールとして決まってるわけではないけど
returnのあとの処理は1関数(オブジェクト経由あり)、1変数が多いね
0601nobodyさん2008/02/19(火) 11:03:45ID:???
558の場合は言い分じゃなく完全に荒らし化してる言動や連投がまずいんだ。
0602nobodyさん2008/02/19(火) 11:07:29ID:???
で、可読性はともかく、負荷は軽くなるの?
0603nobodyさん2008/02/19(火) 11:11:56ID:???
変数を多様すればコードはみやすくなる

変数を使わないとコードはみにくい(関数の中に関数が深く入り込むコードになる)
↑
if文の中にif文が何個も深く入りこむコードと同じ。みにくい
0604nobodyさん2008/02/19(火) 11:13:03ID:???
>>602
当人も負荷の増加が小さいから無視していいと言ってるだろ。
逆に言えば、増えることはあっても減ることはない。
コードすべてに1行で済むのを5行10行と増やしてどうなるかは言うまでもないでしょう。
0605nobodyさん2008/02/19(火) 11:15:16ID:???
>>602
負荷と生産性どっちを優先するかは
プロジェクトによって違う

生産性の高いコードなら可読性
PHP使うくらいだから生産性の高いプロジェクトでコード書くことが多いだろう
0606nobodyさん2008/02/19(火) 11:20:11ID:???
新しくプロジェクト参加した人は可読性のいいコードがいいだろうな
解析時間が短縮される
毎度毎度、1行プログラミングに自己満足されるコードは勘弁
0607nobodyさん2008/02/19(火) 11:22:09ID:???
バグ探しも可読性が有利だよな
0608nobodyさん2008/02/19(火) 11:23:35ID:???
>>604,605

>>558
>count関数の中に関数いれるのは 処理が重くなる

って書いてあるけど、これは間違ってことでOK?
0609nobodyさん2008/02/19(火) 11:26:33ID:???
>>608
ループ処理のこといってるんじゃない?

for($i=0;$i<=count($a);$i++)
重い

$a = count($a);
for($i=0;$i<=$a;$i++)
軽い
見やすい
0610nobodyさん2008/02/19(火) 11:27:31ID:???
どっちにしろコメント添えるなら >>591 で足りるな。
それに >>588 のコードが否定されてるんじゃなく「それもあり」という前提になってんのに
自分のだけを認めろと連投で大騒ぎする588自身が否定されてるだけだしな。
0611nobodyさん2008/02/19(火) 11:29:05ID:???
>>608
>>609だと毎回コールされるからね。
だから別に関数内にいれようがコール1回なら重くならない。
0612nobodyさん2008/02/19(火) 11:31:18ID:???
an httpdを使ってXP上でテストをしてるんですが
この時にgetenv('SERVER_NAME')を取得するとコンピュータ名が返るのは仕様ですか?
後、スクリプトのパス自身を取得したい場合は
"http://".getenv("SERVER_NAME").getenv("SCRIPT_NAME") でいい大丈夫でしょうか。
0613nobodyさん2008/02/19(火) 11:33:20ID:???
>>609
それは「count関数を何度も呼び出せば遅くなる」であって
「count関数の中に関数いれるのは 処理が重くなる 」からではないよね。

単に >>558が間違ってるだけなら、それで良いです。どうもありがと。
■ このスレッドは過去ログ倉庫に格納されています