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

【PHP】質問スレッドpart33【php】

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2006/02/16(木) 03:19:52ID:xwXojaq/
PHP全般の質問スレです。
【基本ルール】
・新規質問の方は上げてください。age進行でお願いします。
・質問者は2回目以降、最初のレス番号を名前欄に入れてください。
・回答者は質問者に対して>>(アンカー)をつけてください。
・煽り・荒らしは放置。荒らしに反応した香具師も荒(ry
・解決しなくてもこたえてもらったら礼を。
【質問テンプレ】
・マニュアルを調べたか、google検索したか(調べたキーワード)
・タイトル(禁:教えてください!etc) 例:requireとinclude
・内容 例:requireとincludeはどう違うのですか?
・質問する際には環境も明記。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークはそれぞれの該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
・オブジェクト指向については良スレがないから本を買え
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
【PHP マニュアル】
http://www.php.net/manual/ja/
※マニュアル上部の「search for」から検索を活用すべし(便利)。

過去スレ、関連リンク、FAQ等>>2-10辺り
06936712006/03/10(金) 22:48:17ID:8gj1xhR9
>>681-682
レスありがとうございました。
調べてみます!
06946872006/03/11(土) 08:33:19ID:???
>>688-692
みなさんありがとうございました
なんとなく安心しました

他の方は配列でやってるのでしょうか?
それともクラス定義?
最初はクラスで定義してたのですが
変数の宣言を忘れても間違ってても
エラーにならないのでやめてしまいました。
(もしかしてエラーのレベルのせい?)
もう1度いろいろ試してみます。

>>691
配列でやると構造をあらわしにくいと思います
0695nobodyさん2006/03/11(土) 08:46:23ID:???
漏れはもっぱら配列
気がつくと5次元6次元配列とかできてたりして

この辺は個人の作り易さとかあるだろうな
0696nobodyさん2006/03/11(土) 08:47:02ID:???
漏れはもっぱら配列
気がつくと5次元6次元配列とかできてたりして

この辺は個人の作り易さとかあるだろうな
0697nobodyさん2006/03/11(土) 08:50:36ID:???
>>694
いちおうPHPの配列はリスト、スタック、キュー、マップ(ハッシュ)、木構造などだいたい表現できるけど。
stdClassは使い捨てスクリプトとかテストスクリプトみたいな一時的なものに使う以外にはあんまり使い道ないよ。
全部配列で代替できるから。
構造の「定義」をしたいならクラスを使うべき。
06989722006/03/11(土) 11:53:34ID:???
>>974
できました。
亀レスですがありがとうございました。

>>973
リファレンスで検索しても基本的な関数の一覧しかヒットしませんでした。
その様な関数はあるのでしょうか?

更に質問なのですが、
関数内で引数として渡された値実体を
直接変えることはできますか?
伝わりにくいかもしれませんが、
やはりCでのポインタを用いたswapのイメージでお願いします。
0699nobodyさん2006/03/11(土) 11:56:35ID:???
>>698
未来からやってきた
0700nobodyさん2006/03/11(土) 12:00:18ID:???
>>698
お前が>>672なら
function hoge(&$var) {
$var++;
}
$val = 1;
hoge($val);
echo $val;
07016982006/03/11(土) 12:01:00ID:???
>>699
アンカー全て600番台に
脳内置換お願いしますorz
0702nobodyさん2006/03/11(土) 12:10:19ID:???
>>698
function swap(& $a, & $b) {
 $t = $a; $a = $b; $b = $t;
}
この&をつけて変数を渡すことをPHPではリファレンスっていうのです。C++の参照の構文に似せてあるね。
http://php.net/references
07036722006/03/11(土) 12:27:06ID:???
>>700
調べてみました。
参照変数なんてあったんですね。

ポインタと比べて変数のアドレスは操作できないが、
アドレスの指す変数を操作していると解釈していいのでしょうか?
0704nobodyさん2006/03/11(土) 12:34:58ID:???
お願いだから、マニュアル熟読してよ
0705nobodyさん2006/03/11(土) 13:20:09ID:???
>>695
お前最悪だな
糞なおまえの糞スパゲティコードなんかメンテしたくねえや。

クラスくらい作って『集約(Aggregation)』くらいしやがれや
0706nobodyさん2006/03/11(土) 13:22:48ID:???
>>703
>調べてみました
何を調べたんだ
0707nobodyさん2006/03/11(土) 15:43:24ID:???
>>697
配列で代替できるけどわかりにくくね?

687みたいなのを配列にしようとすると
変数わけるしかなくない?
0708nobodyさん2006/03/11(土) 15:53:32ID:???
5次元とかの方が書いてるときはさくさくかける。


おかげでアホな外注が作ったワケ分からんスパゲッティーコードを
元請様がデバッグする羽目になる。
0709nobodyさん2006/03/11(土) 17:03:22ID:???
>>707
っ[連想配列]

クラスも連想配列に似た実装になってるわけだが>phpのばあい
0710nobodyさん2006/03/11(土) 17:08:56ID:???
>>709
$a['s1'] = "aaa";
$a['s2'] = "bbb";
$a['b']['n1'] = 123;
$a['b']['n2'] = 456;

こんな感じ?
なんか気持ち悪いのはおれだけ?
0711nobodyさん2006/03/11(土) 17:22:05ID:???
>>710
慣れ慣れw
0712nobodyさん2006/03/11(土) 17:37:45ID:???
>>710
気持ち悪いというか、おれはそういうのは訳解らなくなる。
0713nobodyさん2006/03/11(土) 17:44:10ID:???
>>712
まークラスにしても
PHPには型宣言もないし
宣言してない変数でも使えてしまうし
いっしょな気もする・・・

変数名で型とかがわかるようにするとしても
連想配列もクラス変数も一緒だしね
0714nobodyさん2006/03/11(土) 17:48:15ID:???
perlでよく使うけど引数を連想配列で渡すのは順番気にしなくていいかもね
PHPもプロトタイプレスだし
0715nobodyさん2006/03/11(土) 18:53:19ID:???
クラスの代入で質問です

$hoge1 = new Hoge();
$hoge1->num = 100;
$hoge2 = $hoge1;
$hoge2->num = 200;
echo $hoge1->num;

とした場合、
PHP4.3.10では 100 が
PHP5.1.2 では 200 が返されました。

PHP5で仕様が変わったのでしょうか?
マニュアルのどこかに記載がありましたら教えてください。
0716nobodyさん2006/03/11(土) 18:56:25ID:???
糞にくそみそに言われたorz
0717nobodyさん2006/03/11(土) 19:07:03ID:???
>>715
PHP5ではオブジェクトはデフォルトで参照渡し、
PHP4では値渡し(コピー)。
0718nobodyさん2006/03/11(土) 19:07:44ID:???
>>715
代入演算子の扱いが変わってる
cloneで調べろ
0719nobodyさん2006/03/11(土) 19:53:28ID:???
>>708
他人のスパゲッティーコードは困るな。
まあ、ロジック読むとこまでは訓練でなんとかなる。がんばれ
0720nobodyさん2006/03/11(土) 20:39:49ID:???
>>710
それくらいならまだまし
Javaでも二次元キーのハッシュはよく作るから。
List key = new ArrayList<String>();
key.add("book");
key.add("sound");
Map map = new HashMap<List, Integer>();
map.put(key,123);

key = new ArrayList<String>();
key.add("paper");
key.add("light");
map.put(key,456);

こんな感じで。


これで5次元のキーでもまあ、どうにかなるだろう。

しかしこれが5次元の配列となるとまた別。
最悪。5次元のキーを持つハッシュではなく配列ってのは読みにくくて超ウザイ。
そんなコードを書いて渡した奴に鉄拳制裁したくなる(できれば経済制裁したい)。
0721nobodyさん2006/03/11(土) 21:01:41ID:???
2次元で十分だなぁ
3次元画像はいらん
0722nobodyさん2006/03/11(土) 21:17:29ID:???
4次元ポケットがほしい
0723nobodyさん2006/03/11(土) 21:35:40ID:???
そこで次元大介ですよ
0724nobodyさん2006/03/11(土) 21:43:45ID:???
高次元理論を証明する公式はPHPで書けますか?
0725nobodyさん2006/03/11(土) 21:48:49ID:???
>>724
( ゚Д゚)ポカーン
07267152006/03/11(土) 23:46:02ID:???
>>717-718
ありゃー
デフォルトの動作が変わってたんですね
ありがとうございました
0727nobodyさん2006/03/12(日) 00:09:02ID:yHHsI6Ak
echo '高次元原理を証明する公式';
0728nobodyさん2006/03/12(日) 00:24:10ID:d4WSeAj/
strip_tagsで、複数のタグを取り除きたい場合、どのように指定すればいいですか?
例(1つ)->strip_tags($str,'<Font>');
例(2つ)->strip_tags($str,'<Font><b>');?
0729nobodyさん2006/03/12(日) 00:26:02ID:???
strip_tagsはあまり使わないほうがええよ
0730nobodyさん2006/03/12(日) 00:36:59ID:???
>>728
自分で回答してんじゃん。何故、1度でも試してから質問しない?
>>729
なんで?
0731nobodyさん2006/03/12(日) 01:04:24ID:???
>>729
への?
0732nobodyさん2006/03/12(日) 11:19:33ID:???
error_reportingのE_STRICTって
error_reporting関数では設定できないの?
E_ALLまでは指定できるけどE_STRICTだけ有効にならない
0733nobodyさん2006/03/12(日) 11:43:11ID:???
>>732
環境くらい書けと。
error_reporting(E_ALL | E_STRICT);
ちなみにE_STRICTはPHP5.0から
0734nobodyさん2006/03/12(日) 11:54:05ID:???
>>733
すんません、できるはずなんですね。
PHP5.1.2なんですが、
error_reporting(E_ALL | E_STRICT);
としても
error_reporting(4095);
としても有効にならないっす
httpd.confかphp.iniならできるんだけど・・・
0735nobodyさん2006/03/12(日) 13:20:13ID:???
>>734
一応確認するが、どうやって有効になったかしらべてるの?
07367322006/03/12(日) 17:42:38ID:???
>>735
class Hoge {
var aaa;
}

って書いてるけど・・・
0737nobodyさん2006/03/12(日) 22:33:58ID:???
メンテ前提なら、phpとかperlの仕様で発注しちゃ駄目だよ。
CとかJavaで発注かけないと。

phpとかperlは仕様書見て作り直しが基本。
07387322006/03/13(月) 00:30:59ID:???
E_STRICTは実行前のコンパイルのときに報告されるので
コンパイル後に
error_reporting(xx)
でE_STRICTを有効にしても
時すでに遅しってことのようですね。
失礼しました
0739nobodyさん2006/03/13(月) 06:00:06ID:???
$moji = "おはようございます。さいきん暖かくなりましたね";

↑
変数の最初の10文字だけ取得したいのですが
適切な関数はないでしょうか?
0740nobodyさん2006/03/13(月) 06:16:49ID:???
>>739
くだ質行き。

mb_strcutかmb_substr、場合によってはmb_strimwidthも便利。
0741nobodyさん2006/03/13(月) 07:29:03ID:???
マニュアルも読まない野郎が多すぎ
0742nobodyさん2006/03/13(月) 07:58:53ID:???
●マルチバイト文字列関数
 http://www.php.net/manual/ja/ref.mbstring.php

●日付・時刻関数
 http://www.php.net/manual/ja/ref.datetime.php

●配列関数
 http://www.php.net/manual/ja/ref.array.php

●正規表現関数
 http://www.php.net/manual/ja/ref.pcre.php

これくらいは読めヽ(`Д´)ノ ウワァァァン
0743nobodyさん2006/03/13(月) 13:10:52ID:???
比較的使用頻度の低いカテゴリの関数はまぁしょーがないかなと思うけど、
どう考えても1度は目を通しとかないとPHPプログラマとしてまずかろう、って
レベルの基本の内容すら目を通してない連中がごろごろいるってのがなぁ…
0744nobodyさん2006/03/13(月) 13:43:15ID:???
> どう考えても1度は目を通しとかないとPHPプログラマとしてまずかろう

って誰が判断するんだろう。
0745nobodyさん2006/03/13(月) 13:50:28ID:???
いきなり書き始めても、困ったらそこを読む代わりに
このスレに書く、ということですな。
0746nobodyさん2006/03/13(月) 14:47:15ID:???
>>744
そんなん自分だろ。
その自分が目を通すか通さないかの敷居を低くしていくと、
全体的なレベルが下がるから困るとも言いたいんじゃないか?
0747nobodyさん2006/03/13(月) 19:00:58ID:???
fopen()などでURLを引数に使うためにはallow_url_fopenを使いますが、こういったアクセスで
タイムアウトを設定することはできますか?

いつまでもページ全体が表示しないのはまずいので、つながらないときはエラーでもいいから
早めに諦めてほしいのです。
0748nobodyさん2006/03/13(月) 19:02:04ID:???
あ、しまった。マニュアル読んだつもりだったけど見落としてた
「ファイルシステム関数」にモロに書いてました・・・
0749nobodyさん2006/03/13(月) 19:44:33ID:???
php検定試験ぐらい有志が行って、スキルを保証すべきじゃねえの?
なんか
php出来ます=低スキル、低単価、案件失敗確実
って風評が広まってる悪寒。
0750nobodyさん2006/03/13(月) 19:46:15ID:???
PHPできるよりCやC++、Javaができる方が重宝されるっしょ。
仕方ない事だと思うよ。
0751nobodyさん2006/03/13(月) 20:04:43ID:???
>>749
ま、あまり間違って無いしな、それ
0752nobodyさん2006/03/13(月) 20:09:07ID:???
>>749
事実だし
0753nobodyさん2006/03/13(月) 20:37:44ID:???
C,C++,Javaに限らず、他の言語で普通にプログラムが出来る奴は
phpの文法、ロジックなんか簡単にマスター出来るでしょ。
http的な事でとまどう事は有るだろうけど。
むしろphpしか出来ないエンジニアなんて皆無に近いんじゃマイか
0754nobodyさん2006/03/13(月) 20:44:21ID:???
結構いるぞ >PHPしかできないやつ
0755nobodyさん2006/03/13(月) 20:44:28ID:???
PHPしかできない奴はウザイがな
確かに。Perlしかできないやつのほうがマシ
0756nobodyさん2006/03/13(月) 20:45:30ID:???
PHPしかできないって、webデザイナ上がりの厨房だろ。
PHPだけでなんでもかんでも作ろうとする原理主義者に
はなってもらいたくはないな。辞めて欲しいんだが。
0757nobodyさん2006/03/13(月) 20:52:57ID:???
酷いとこじゃ事務上がりに無理やり作らせてるよな >商用Webサイト
0758nobodyさん2006/03/13(月) 21:20:14ID:???
それだけ優れた言語とも言えるな
大規模開発だけがプログラムじゃないし

っていうかここなんてスレ?
0759nobodyさん2006/03/13(月) 21:27:13ID:???
ちょっとしたのならいいが、
大規模化するとやばいぞ。
それでプログラミングなんて
馬鹿でもできるなんて迷信が広まったら最悪だ。
ただでさい東証システム事件でやばいことになって
本気でIT=虚業だとほざく馬鹿やマスコミまで出てきているというのに。
情報処理学会がそれを危惧して
こんな発言をしているぞ。

2005年後半から2006年初頭にかけての事件と情報教育の関連に関するコメント
http://www.ipsj.or.jp/12kyoiku/statement2006.html
「情報システムの理解不足は、国に重大な影響を及ぼす」、情報処理学会が見解表明:ITpro
http://itpro.nikkeibp.co.jp/article/NEWS/20060307/231860/
0760nobodyさん2006/03/13(月) 22:05:53ID:???
えー・・・phpしか出来ない奴なんていないだろ、と書いた後で
皆さんのレスを見ていてphpしか出来ない自称PGの起こした事件を思い出しました。

DTP上がりのphp房が集客系のシステムで客に一番初期のXServe台、
シグマリオン1台、開発用のPB一台買わせたあげくに開発失敗してトンヅラしたとかだっけ・・・
アレたしかphpで<a href="">のhrefの中身が全部ハードコーディングしてあって
びびった事が有ったの思いだした。。。
テスト環境から本番環境に移行するのにどうやったんだろうなぁ。
エディタで書き換えたんだろうか。sedなんか使えるとは思えないし。

で、被害者から相談されてそのPGに設計書か仕様書を出せ、と言ったら
「webシステムには設計書というものは通常出さないものだ」
とか言ってた・・・
着手前に要件定義書を出さない・出せない人はやばいよねぇ。ていうか有り得ないんだけど。

いや、もうホントスレチガイも甚だしいですね。スマン子
0761nobodyさん2006/03/13(月) 22:15:42ID:qnB47IGO
みんな2ちゃんねる素人だから知らないと思うけど
こういうねたはプログラマ板ってところでやるんだよ。
0762nobodyさん2006/03/13(月) 22:16:48ID:???
>>760
いやなこった。
そんなPHP厨がこの業界に繁殖するなんてな。
プログラマの価値が下がる。
ちゃんとソフトウェア工学も理解できない奴が
偉そうにするんじゃねえよっていいたい。
0763nobodyさん2006/03/13(月) 22:59:48ID:???
>>760
なにPHPしか出来ない俺に言ってんの?
誰だって最初は一個しか書けないんじゃないのかよっ!

>>762
は>760のどこに反論してるのか分かりません。 ><
っていうかソフトウェア工学ってなに?必須?
0764nobodyさん2006/03/13(月) 23:10:39ID:???
どの言語が出来ても所詮プログラマ
0765nobodyさん2006/03/14(火) 00:39:01ID:???
おらPHPしか出来ない趣味グラマ
0766nobodyさん2006/03/14(火) 03:24:27ID:PRYzuNfa
ファンの希望をかなえてくれる女の子が真のアイドルなんだよ
0767nobodyさん2006/03/14(火) 03:48:19ID:???
php できます♥とかいうアイドルはいないものか。
0768nobodyさん2006/03/14(火) 04:37:37ID:???
なんで質問スレがマ板になってるの?
0769nobody2006/03/14(火) 05:21:47ID:l+upm9sf
PHPを学び始めたばかりです。「独習PHP」という本を使って勉強しています。自宅サーバでapacheを使っています。

ちょっと つまづいてしまって先に進めない状態です。
file1.php
<html>
<head>
<title>スーパーグローバル変数
</title>
</head>
<body>
<form method="POST" action="file2.php" enctype="multipart/form-data">
ファイルのパス:
<input type="file" mame="upload" size="50" />
<input type="submit" value="アップロード"/>
</form>
</body>
</html>

file2.php
<?php
move_uploaded_file($_FILES['uploaded']['temp_name'],
'./doc/'.$_FILES['uploaded']['name']);
print('アップロードに成功しました');
print ($_FILES['file']['error']);
?>

という2つのプログラムを実行すると、「アップロードに成功しました」と表記はされるのですが、実際に/samples/chap2/docにアップロードされているかどうかよくわかりません。chap2の下にdocというファイルができるのでしょうか?
また、print ($_FILE['file']['error']); を記述いているのに返答がありません。なにかまちがっているんでしょうか?
どなたか 教えてください。


0770nobodyさん2006/03/14(火) 05:48:46ID:???
>>769
あなたが書いたのは、HTMLか、XHTMLか、どっちだ?

話はそこからだ。
0771nobodyさん2006/03/14(火) 06:04:05ID:???
ということにしたいのですね?:)
0772nobodyさん2006/03/14(火) 06:38:42ID:???
>>769
質問する前に、自分の書いたスクリプトに本当に間違いがないかちゃんと確認した?
HTMLの文法はそれで本当に間違いはないの?
スペルミスはない?

ここまで言っても相変わらず「どこがまちがってるのか分からない」って言っているようじゃ
申し訳ないけどWebプログラミングの素質は全くないよ。
あるいは、いつまで経ってもこういうスレの存在がなければまともに一仕事できない
赤ん坊のままだね。

もうちょっと自分自身の力だけで頑張ってみなよ。
0773nobodyさん2006/03/14(火) 07:15:01ID:???
>>769
自宅サーバなら簡単に確認できるだろ
0774nobodyさん2006/03/14(火) 07:21:36ID:???
>>769
そのスクリプトに間違いがあるかどうかには関知しないが、
PHPのHTTP POSTによるファイルアップロードの処理は
マニュアルの以下にまとまっている。
http://www.php.net/manual/ja/features.file-upload.php

テンポラリにアップロードされてから、任意の場所に移動
という手順を踏むことや、注意すべきポイントが解説されているので
解説本だけで済まそうと思わないで、マニュアルも併読すること。
0775nobodyさん2006/03/14(火) 07:25:45ID:???
解説本やマニュアルだけで済まそうと思わないで、php エンジンのソースコードも
併読すること。
07767742006/03/14(火) 07:36:40ID:???
UserNotes読んでたんだが、
アップロードのファイルを監視して進行状況を提供する改変パッチ
http://www.modphp.org/viewtopic.php?p=325
これ結構面白いな。
0777nobodyさん2006/03/14(火) 07:41:26ID:???
>>775
マニュアルは一応"仕様"と見なしていいから、
PHP(ZE)のソースの併読はいらんよ。
必要があった時に読めばいい。バグリストもな。
0778nobodyさん2006/03/14(火) 08:35:18ID:???
>>777
んなこと言ってっから成長せんのだよ
0779nobodyさん2006/03/14(火) 08:40:59ID:???
>>778
んな余計な事やってるから仕事が鈍いんだよ
0780nobodyさん2006/03/14(火) 08:45:43ID:???
おお。きたきた。
0781nobodyさん2006/03/14(火) 08:53:09ID:???
仕事なんて、適当にスパゲッティの山を仕上げればええやん。
0782nobodyさん2006/03/14(火) 09:23:55ID:???
仕事であのコードはまずいだろう・・
0783nobodyさん2006/03/14(火) 10:58:08ID:???
>>769
「アップロードに成功しました」って…
成功したかどうか判別もしないで必ずそう表示するように作ってるんじゃん。
それって自分で作ったのか?それともサンプル?
もしもそれがサンプル通りならその本捨てれ。参考書になってない。
0784nobodyさん2006/03/14(火) 10:58:35ID:???
>>769
mame="upload"
まめ・・・
0785nobodyさん2006/03/14(火) 11:15:07ID:???
>>769
'doc'はファイル名じゃなくディレクトリだろ。事前に作っておかないと動かねーし。
0786nobodyさん2006/03/14(火) 11:55:03ID:???
> 仕事であのコードはまずいだろう・・

仕事ってもいろいろあるんじゃない?w
0787nobodyさん2006/03/14(火) 14:08:10ID:1kXYSwK7
>>784が既に指摘している通り
<input type="file" mame="upload" size="50" />
mame→nameが正しい

だがここを直したところで

move_uploaded_file($_FILES['uploaded']['temp_name'],
'./doc/'.$_FILES['uploaded']['name']);
HTML内ではuploadだったのに、ココに来て'uploaded'となってはそんな変数ありませんだ。

更にだ。
$_FILESに'temp_name'なんて配列の要素抱えてない。
正しくは'tmp_name'な。
docディレクトリは自分でまず作って置いてパーミッションは777にするように。
0788nobody2006/03/14(火) 16:46:49ID:l+upm9sf
769です。

みなさん返事書き込みありがとうございました。

おかげで動きました。あと、いろいろアドバイスありがとうございます。
プログラムが動いたことがとってもうれしいです。
0789nobodyさん2006/03/14(火) 16:54:25ID:???
PHP+SQLの質問です。
SQLのレコードにある特定の文字を消去するためPHP側より
select trim(leading '文字' from フィールド)from テーブル
というSQL文を発行して特定の文字を消すのですが、
消去した後のフィールドを配列として格納したいのですが、うまくいきません。
教えて頂けないでしょうか。
当方はmysql_fetch_arrayで試しているのですが間違いですか?
0790nobodyさん2006/03/14(火) 18:38:57ID:???
> うまくいきません。
うまくいかないのは分かったが、エラーは出てないのか?
MySQL側。
0791nobodyさん2006/03/14(火) 20:07:46ID:???
>>789
そんな質問じゃ誰も答えられん。
何がどう上手くいかないのか具体的に書かないと。
0792nobodyさん2006/03/14(火) 21:43:36ID:???
>>5
■ このスレッドは過去ログ倉庫に格納されています