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

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

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

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

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

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

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

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで


0367nobodyさん2007/10/05(金) 11:05:17ID:???
おれにはperlやphpは宣言しなくてもよくてコンパイルも
必要なく手軽に扱えるというのが好感触ポイントだけどな

なんかphpは下級言語で高級言語のC使えるやつや使ってる奴がえらい みたいな流れだな
嫌味くせえ
0368nobodyさん2007/10/05(金) 11:09:48ID:???
いやいやPHPは超高級言語だから
難易度が簡単なもの=低級じゃないよ
人間に理解可能かどうか
人間にとって難解であれば難解であるほど低級言語

低級←             →高級
機械語 アセンブラ C JavaやPHP
0369nobodyさん2007/10/05(金) 11:17:14ID:???
ところでPHPのソースってC++?
0370nobodyさん2007/10/05(金) 11:35:46ID:???
>>30-33の流れの話とか、>>33の飛び先の話とかデータ型を意識しないで
或いは意図的に避けて育っちゃうと理解できないと思うし、解決方法を
見い出すことすらままならないじゃないかな。
03713602007/10/05(金) 11:38:13ID:???
メリットデメリット両方書いたつもりなんだがな
嫌味に聞こえたなら悪かった
正直なところケースバイケースだと思う
>>348 の質問があったから、型なし言語の経験のみなら、
次やるとしたら型ありがいいんじゃない?っていいたかっただけ
php本体はCで書かれてるgccだから一部c++な機能つかってるかもだけど
ちなみに、機械語、アセンブラ以外は全部高級言語だよ
個人的には phpとかjavaとか無かった時代の言葉なので、今使うのは
時代になじまないと思う
0372nobodyさん2007/10/05(金) 11:38:20ID:???
>>369
CそれとAWKがちらほら
0373nobodyさん2007/10/05(金) 11:38:23ID:???
ORZ
0374nobodyさん2007/10/05(金) 11:43:28ID:???
Cは高級アセンブリ言語という位置づけでしょ
低級でもなければ高級でもないんじゃね?
中級ってところだと思うが
ポインタなんかもあるし
0375nobodyさん2007/10/05(金) 11:45:00ID:???
機械語を知らない奴がプログラムを語るなと某所で煽ってる奴がいたな

>>373
どうしたw
03763602007/10/05(金) 11:50:47ID:???
http://ja.wikipedia.org/wiki/%E9%AB%98%E7%B4%9A%E8%A8%80%E8%AA%9E
とかで判断してくれ
0377nobodyさん2007/10/05(金) 11:51:28ID:???
>>375
それ見たかもしれない。
どっかの会社の社長の日記だろ?はてなで見た気がする。
アセンブリ言語ならともかく機械語までさかのぼっちゃうのはどうなのよ。
古い人間の意見だと思いたいんだけど実際本当に機械語まで知る必要がある?
機械語世代の古参プログラマの方の意見を聞きたいね。
あったほうがいいっていうなら話はわかるけど必須っていわれると・・・
0378nobodyさん2007/10/05(金) 12:00:02ID:???
>>377
必要無いでしょ。CPU(MPU?)毎に異なるんだし。
機械語だってCPUに取り込まれてそのまま実行じゃなくて
さらに翻訳して…という行程を経るから意味無しじゃん。
0379nobodyさん2007/10/05(金) 12:06:36ID:???
PHPだけならアセンブリは不要
というのもPHPで大規模なものは作らないから最適化の必要がない
そもそもPHPでアセンブリを使えない(と思う)
03803752007/10/05(金) 12:09:16ID:???
まあ書いた人曰くエラーに強くなるとか何とか

LLのモジュールをデバッガで追いかけてバグの原因を探すとか
微妙に訳の分からん話をしていたな
0381nobodyさん2007/10/05(金) 12:11:09ID:???
>>378
機械語は唯一CPUが直接実行することができるんだよ
他の高級言語は最終的に全て機械語に変換されて実行される
0382nobodyさん2007/10/05(金) 12:20:59ID:???
>>381
アセンブリ言語をアセンブルした機械語をCPUが直接実行するんじゃなくて
CPUの中で機械語をさらに内部コードに展開して実行するという話でしょ
03833602007/10/05(金) 12:28:09ID:???
>>377
俺C世代だが、そのころはアセンブラしっておかないと。とかよく言われてたから
さわりだけかじったことはあるぐらい
>>378 がかいてるとおり、
今はさすがにそこまで知っておく必要性は薄れてきてるとおもう
linux kernel も アセンブラで書かれてるのは一部だしね
俺もその記事よんだが、メモリの使われ方とかイメージできない
やつが多すぎる。のようなこと書いてた点には賛同しちゃう
一生webしかやらないなら不要かもしらんが、負荷集中して
パフォーマンス出ない。unsetしたほうがいいんじゃないの?とか
phpソースレベルで詳細確認したいとかいう状況になる立場に
いるのなら知っておいたほうがベストではあると思う
もっともほかの言語に行く前に、
正規表現使えるようになっとけ
ってことかな応用きくしな
0384nobodyさん2007/10/05(金) 12:39:08ID:???
俺もアセンブリ言語覚えたいなー
やっぱりその辺から理解していると絶対楽しいと思うし

何よりデバッガ見てちゃんと理解できるのが羨ましい
0385nobodyさん2007/10/05(金) 12:44:06ID:???
>>382
そういう話だと思うが、分子=機械語、原子=内部コード
みたいなものだからどちらかというと分子の振る舞いを知る方が
化合物=高級言語のユーザには重要だと思う。
# 特にPHPって高級言語のなかでも素の部分は低級な作りだから。
0386nobodyさん2007/10/05(金) 12:47:09ID:???
PHP使いに機械語の知識は必要か?

Cの知識はあるべきだと思う。自称mysqlのモジュールでも読んで、
簡単なモジュールでも書けるようにしとけばなにかと役に立つ。
PHPなんて簡単過ぎてもう完全にマスターしちまったよ、
と思ったらCソースを読めるようにしとくと、ここでさらにデカい顔が出来る気がする。

アセンブラは...どうだろうね。俺は組み込みマイコンで遊ぶことがあるから
たまに書いたりディスアセンブルしたコードを読むことはあるけど、
PHPと関係するような場面で役に立つことはなさそう。
ただCの理解にはとても良い。すごく良い。

機械語は、たぶん必要ない。ただ自在に操るとカッコいい。

>>384
たいていはソースレベルデバッグで間に合うからCだけで大丈夫だよ。
0387nobodyさん2007/10/05(金) 12:56:51ID:???
昔、Z80のアセンブラに手を出し多倍長演算が面倒で投げ出した<駄目じゃん、俺
0388nobodyさん2007/10/05(金) 13:03:40ID:???
何か話が明後日の方向にすすんでるけど、
>>348の質問「PHPの次のステップアップ」は機械語でFA?
0389nobodyさん2007/10/05(金) 13:06:43ID:???
Cをマスターするのは良いかもねぇ。PECLで貢献できるかもしれないよ。

それはさておき>>348の欲望を満たすにはどうすんべ?
環境構築はWindows+IIS+.NETFrameworkでC#の方が間違いが少ない
どう転んでもこれで設定に失敗するってことはないと思うが
0390nobodyさん2007/10/05(金) 13:17:56ID:???
ただ>>348はPHP熱が冷めたから次ステップと言ってるからPHPを極めて次って訳じゃないんだよね。
PHPのOOPすらしてないみたいだし。
だから何やっても中途半端に終わる予感。
Web技術云々ならHTTP関係の勉強したら?と思った。言語はPHPのOOPでも。
0391nobodyさん2007/10/05(金) 13:24:29ID:???
>>389
確実にできるものだけ選択しててもレベルアップにはならんのでは?
環境構築だって立派なスキルだし、独学なら教科書読むより失敗から学ぶ方が身につく。
0392nobodyさん2007/10/05(金) 13:42:15ID:0zJjw8jk
国土交通省のサイトから
位置情報のデータベースをダウンロードして
MySQLに全部ぶちこみたいんだけど、
何せ量が多すぎる・・・

全部で1GBくらいになるんだが、レンサバじゃきつい
何かいい方法ないかな?
03933602007/10/05(金) 13:46:22ID:???
しつこいけど正規表現はおぼえとくべき
>>390 の書いたHTTPプロトコル勉強するのはいいね
セッションのしくみ知らない人多いとおもう
phpで書かれたフリーソフト読むとかでもいいかも
どっかのフレームワークとかいいんじゃね?

どうしても、
oopやりたいんならjavaとかC#のほうがいいとおもう
phpは標準でクラスライブラリないから
与えられる道具もクラスの言語の方が理解しやすいんじゃないかな
0394nobodyさん2007/10/05(金) 13:50:38ID:???
>>392
バケツの容量以上に水を入れたい
とかいわれてもいい方法などない
すれ違いだしな
0395nobodyさん2007/10/05(金) 14:10:05ID:yfT5K3xu
MySQLに入ったvarcher型データに改行されている文字列がありますが
そのデータを普通に取得しただけでは改行されませんよね
改行を<BR>に置き換えたいのですが、置き換える元(VBならvbcrlf)がわかりません
何になるのでしょうか?
0396nobodyさん2007/10/05(金) 14:13:41ID:???
>>395
nl2br
03973952007/10/05(金) 14:16:24ID:???
即レスありがとう
無事解決しました
0398nobodyさん2007/10/05(金) 14:27:04ID:???
-11.5478って型はfloatだっけ?
0399nobodyさん2007/10/05(金) 14:39:57ID:???
var_dump(-11.5478)
0400nobodyさん2007/10/05(金) 15:06:23ID:???
追記
gettype(-11.5478)
もやってみるとおもしろいよ
0401nobodyさん2007/10/05(金) 15:15:24ID:???
>>392
自宅にDBサーバー用意してリモートでそっちに接続。
0402nobodyさん2007/10/05(金) 15:24:44ID:OqMmbiqQ
>>392
国土地理院のやつかな?
あれは重複が結構あるね。
重複分を整理、都道府県名や市町村名など余分なものはカット。
これで半分ぐらいになる。
0403nobodyさん2007/10/05(金) 15:55:57ID:???
質問です。
if( ! is_array($hoge)){
$ tmp = array();
for($ i = 0; $i<strlen($hoge); $i++){
$tmp[$i] = substr($hoge, $i, 1);
}
$hoge = $tmp

if( ! is_array($hoge)){でhogeが配列でないことを調べているのに、
$hoge = $tmpで配列に変換しているということは、
左辺が変数で右辺が配列のとき値の代入すると、
自動で左辺の変数が右辺の方の配列に変換されるのでしょうか?
0404nobodyさん2007/10/05(金) 16:03:46ID:???
自動で変換されてるんじゃないの? (自信なし)
$hoge = $tmpの前後で$hogeをデバッグプリントすれば?
04054032007/10/05(金) 16:04:40ID:???
>>404
ありがとうございます
原因がわかって自己解決しました
0406nobodyさん2007/10/05(金) 16:39:48ID:???
>>405
してないです。
0407nobodyさん2007/10/05(金) 16:43:58ID:???
>>405
どういう原因だったの?
自己解決したなら教えて。
04084052007/10/05(金) 17:25:09ID:???
>>407
そんなこと恥ずかしくって書けません。
0409nobodyさん2007/10/05(金) 17:27:45ID:???
>>403
変換っちゅーか置き換えられちゃうだけだけどな。
代入時に元の変数の型なんておかまいなしだよ。
0410nobodyさん2007/10/05(金) 17:39:05ID:???
>>403
PHP4だったら $tmp の持っている値を $hoge に代入になるんだけど
PHP5は $hoge =& $tmp を暗黙に行う
0411nobodyさん2007/10/05(金) 18:23:42ID:???
>>410
暗黙で参照渡しなんてしないだろ…
0412nobodyさん2007/10/05(金) 18:33:15ID:???
>>410
そりゃオブジェクトの代入だw
配列で参照なんて渡さねぇw
0413nobodyさん2007/10/05(金) 20:06:21ID:/jiD7c/g
ただ特定のipに対してping送りたいだけなんですが
phpだとどのようにしたらできますか?
0414nobodyさん2007/10/05(金) 20:08:38ID:/jiD7c/g
なんかIDが正規表現みたいだった
0415nobodyさん2007/10/05(金) 20:11:26ID:???
環境ぐらい書いたほうがええで
0416nobodyさん2007/10/05(金) 20:14:47ID:/jiD7c/g
すいません。OSはRedHat、phpのバージョンは4.4.6、apache使用です。
平たくいうとlolipopのレンタルサーバです。
0417nobodyさん2007/10/05(金) 20:20:31ID:???
`ping 127.0.0.1`;
0418nobodyさん2007/10/05(金) 20:26:08ID:???
ping回数ぐらい指定しないと
0419nobodyさん2007/10/05(金) 20:45:34ID:/jiD7c/g
pingの回数は特に決まってません。

>>417
それは何かの関数で使うんでしょうか?
0420nobodyさん2007/10/05(金) 20:46:28ID:???
exec()とかsystem()とおさないで直接``って書くものなの?
0421nobodyさん2007/10/05(金) 21:08:20ID:/jiD7c/g
$hostにipを入れるとして
system("ping $host");
こんな感じでしょうか?
0422nobodyさん2007/10/05(金) 21:13:31ID:???
>>419
実行演算子参照
0423nobodyさん2007/10/05(金) 22:36:46ID:???
pingの結果は特に参照しないならsystem()の方が速いかもだけどな。
0424nobodyさん2007/10/05(金) 22:43:03ID:???
>>421
/bin/pingとかフルパスにしといた方がいいかもな。
0425nobodyさん2007/10/05(金) 23:40:08ID:/jiD7c/g
ありがとうございました。解決しました。
0426nobodyさん2007/10/05(金) 23:49:03ID:???
ハッシュのキーを変更する方法ありますか?
例 array_key_rename($hash, $key, $rename);

配列の中から特定のキーを除いた配列を返す関数ありますか?
例 array_key_remove($hash, array('key1','key2','key3'));
0427nobodyさん2007/10/05(金) 23:52:18ID:???
>>426
つhttp://www.php.net/manual/ja/
04284262007/10/05(金) 23:56:35ID:???
>>427
あなた、そこちゃんと見ましたか?
見てからレスしてください。
0429nobodyさん2007/10/06(土) 00:03:41ID:???

物凄く頭のおかしい事を言ってるような気が
0430nobodyさん2007/10/06(土) 00:10:29ID:???
>>426
function
0431nobodyさん2007/10/06(土) 00:14:47ID:???
こりゃまた香ばしい
0432nobodyさん2007/10/06(土) 00:16:58ID:???
>>426
とりあえずID出せ
0433nobodyさん2007/10/06(土) 00:17:55ID:???
>>426,428
つhttp://item.rakuten.co.jp/book/1721279/
0434nobodyさん2007/10/06(土) 00:38:14ID:???
>>411
>>412
PHP5はオブジェクト型を暗黙で参照渡しするんじゃないか?
配列はオブジェクト型でしょ。

ただ>>403の答えにはまったく関係ないけど
0435nobodyさん2007/10/06(土) 00:39:09ID:???
>>433
わざわざ探してきたのかw
乙
0436nobodyさん2007/10/06(土) 00:43:10ID:???
>>435
「口のきき方」でググッただけ。
最初amazonのURL貼ったら長すぎと蹴られたので楽天のにした
0437nobodyさん2007/10/06(土) 00:48:25ID:???
>>434
> PHP5はオブジェクト型を暗黙で参照渡しするんじゃないか?
それはそうだが

> 配列はオブジェクト型でしょ。
そんな与太話をどっから拾ってきたんだ。
0438nobodyさん2007/10/06(土) 00:58:59ID:???
JavaScript辺りと混同してるんじゃないか?
0439nobodyさん2007/10/06(土) 01:06:24ID:???
クッキーを保存するプログラムで
保存されてないんだけどなんでだろう
ダウソした見本コードでも保存されてないし
0440nobodyさん2007/10/06(土) 01:09:41ID:???
>>439
IDとソース出せ
0441nobodyさん2007/10/06(土) 01:10:37ID:???
>>439
自作ソースか見本ソースを貼って質問して
0442nobodyさん2007/10/06(土) 01:11:30ID:???
>>439
見本が古いんじゃね
0443nobodyさん2007/10/06(土) 01:15:18ID:???
<html>
cookie.php
<head>
<title>クッキーでデータを記録する</title>
</head>
<body>
<form method="POST" action="cookie_rec.php">
E-Mailアドレス:
<input type="text" name="email" size="30" maxlength="50"
value="<?php print($_COOKIE['email']); ?>" />
<input type="submit" value="送信" />
</form>
</body>
</html>

cookie_rec.php
<html>
<head>
<title>クッキーでデータを記録する</title>
</head>
<body>
<?php setcookie("email",$_POST['email'],time()+(60*60*24*90)); ?>
クッキー"email"を保存しました。
</body>
</html>
こんなんです・・・・
0444nobodyさん2007/10/06(土) 01:17:10ID:???
マニュアル読んでやったほうがいいね
本だから簡易化して説明するのは当然としてもひどすぎる
0445nobodyさん2007/10/06(土) 01:20:59ID:???
>>443
自信ないけどクッキーってhtml本体より前に発行しないといけなくなかったか?

setcookie
http://jp2.php.net/manual/ja/function.setcookie.php
etcookie() は、その他のヘッダ情報と共に 送信するクッキーを定義します。
ほかのヘッダ情報と同様に、 クッキーは、スクリプトによる他のあらゆる出力よりも前に 送信される必要があります(これはHTTPプロトコルの制約です)。
<html> や <head> タグはもちろん 空白も含め、あらゆる出力よりも前にこの関数をコールするようにしなければなりません。
0446nobodyさん2007/10/06(土) 01:21:29ID:???
>>437
>>438
$arr1 = array('a'=>2);
$arr1[] = $arr1;
var_dump($arr1);

参照になってないか?
0447nobodyさん2007/10/06(土) 01:22:06ID:???
ハッシュのキーを変更する方法ありますか?
例 array_key_rename($hash, $key, $rename);

配列の中から特定のキーを除いた配列を返す関数ありますか?
例 array_key_remove($hash, array('key1','key2','key3'));

質問に答える方は、>>1の内容をよく読んでから答えてください。
答えになっていないリンクはいりません。
0448nobodyさん2007/10/06(土) 01:22:53ID:???
まだいたの?お引取り下さい。
0449nobodyさん2007/10/06(土) 01:23:54ID:???
>>448
答えが出ていませんからね。

そりゃ、出るまでいますよ。
0450nobodyさん2007/10/06(土) 01:25:05ID:???
>>449
答えは判明してるけど君には誰も教えたくないんだよw
0451nobodyさん2007/10/06(土) 01:29:41ID:???
「ないから作るしかない」
その一言がいえないんですよね?w
0452nobodyさん2007/10/06(土) 01:30:29ID:???
>>447
スレ違い
http://pc11.2ch.net/test/read.cgi/php/1158647441/
0453nobodyさん2007/10/06(土) 01:32:09ID:???
>>447
質問する側もちゃんと>>1を読もうな。
0454nobodyさん2007/10/06(土) 01:32:48ID:???
>>452
すこし落ち着いたらどうですか?w

PHPが大好きなのはわかりますが、
ないものは素直にないといいましょうよ。
それだけでしょ?
0455nobodyさん2007/10/06(土) 01:34:20ID:???
>>446
なんだそのコード???
意味分かって書いてるのか。
0456nobodyさん2007/10/06(土) 01:34:57ID:???
>>455
>>1を読め
04574552007/10/06(土) 01:36:24ID:???
>>456
>>1のどこを読めって?
0458nobodyさん2007/10/06(土) 01:36:40ID:???
>>455
$arr1に$arr1のコピーを追加する。
だけど、var_dumpには参照として出てるよね?
0459nobodyさん2007/10/06(土) 01:41:11ID:???
>>443
解決できたのか?
0460nobodyさん2007/10/06(土) 01:44:53ID:???
>>434
厳密には
php5ではオブジェクトをハンドルで渡すんだよ
参照がデフォルトってわけじゃない
あとphpはリファレンスカウンタっていうのがあるから
スクリプト上でコピーしても、内部的には実際にデータが変更
されたタイミングでコピーしてる
0461nobodyさん2007/10/06(土) 01:52:56ID:???
>>458
<?php
$a = array(1,2,3);
$b = $a;
$b[0] = 9;
var_dump($a);
var_dump($b);
?>

結果
array(3) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
}
array(3) {
[0]=>
int(9)
[1]=>
int(2)
[2]=>
int(3)
}
どこが参照だって?
0462nobodyさん2007/10/06(土) 01:54:59ID:???
>>461
そのケースは知ってるからあえて>>458にしたんだけど?

>>460 おお、変更したら本当にコピーされた。勘違いしてた。
0463nobodyさん2007/10/06(土) 01:57:19ID:???
>>1を読めば参照かどうかなんてわかるだろ。
0464nobodyさん2007/10/06(土) 01:59:18ID:???
>>463
>>446みたいなケースのとき、
変更されるまで参照持ってるよ。なんてのは
マニュアルに書いてあったけ?
0465nobodyさん2007/10/06(土) 02:01:09ID:???
>>1を読めが流行ですか?
0466nobodyさん2007/10/06(土) 02:05:28ID:???
>>462
なに。その特殊ケースを指して「配列はオブジェクトである」なんて与太をばら撒いてたわけ?
■ このスレッドは過去ログ倉庫に格納されています