トップページphp
982コメント234KB

PHP総合雑談スレ

レス数が900を超えています。1000を超えると表示できなくなるよ。
0001nobodyさん2008/01/14(月) 21:35:11ID:???
PHP全体の雑談のようなスレがなかったからたてた
反省はしていない
0838nobodyさん2009/06/01(月) 19:04:18ID:???
自分のコーディングを信用できず、標準関数だと安心できる人のため。
0839nobodyさん2009/06/01(月) 22:01:49ID:???
===を理解してない人にもわかるようにじゃねw

コンパイラ通すような言語だとこういうのはどっちで書いてもコンパイル時の最適化で
実行ファイルでは全く同じ処理するように置き換えられたりしそうだけど
PHPだと無理なんだっけ?中間コードみたいな
0840nobodyさん2009/06/02(火) 01:08:20ID:???
>>836
is_nullは組み込み関数故、C言語のコンパイラ/リンカレベルで最適化されているはず。

そのため、$hoge === nullを比較するopコードと、組み込み関数を呼び出すopコードの違いと考えると、そこまで大きな差は生まれないような気がする。

実際PHPのソース拝んだ訳じゃないから、適当な思いつきだけど

>>839
Zend optimizerとかeAcceleratorのoptimizerオプションをonにすれば、少しは最適化されるかもね。
あとは、大幅に改善されると噂されるPHP 6(Zend Engine 3)に乞うご期待ってところ?
0841nobodyさん2009/06/02(火) 02:11:45ID:???
なるほどねー
まぁそのあたりの差が顕著になるようなものをPHPで作ること自体ありえない気もするけどなw
0842nobodyさん2009/06/02(火) 02:24:41ID:???
マニュアルのユーザノートにベンチあったぞ
実装意図はis_*軍団のインテグリティのためだろう
型判定のシリーズがあるから

まあよりカオスになっとる気もするけどな
0843nobodyさん2009/06/02(火) 15:09:20ID:???
確かに、いっそのことis系は最低限必要な物以外は全部なくなった方が迷わなくて済むな。
0844nobodyさん2009/06/02(火) 22:44:13ID:???
組み込み関数でも演算子に比べればオーバーヘッドがあるだろ。
0845nobodyさん2009/06/03(水) 03:01:02ID:???
どうせやること同じなんだし、どっち使うかなーとか考えなくてすむしなw
0846nobodyさん2009/06/04(木) 10:04:26ID:???
>>784
CIにのせたわけじゃないけど
Posqlってメソッドが充実してるし使えると思うぞ。
小規模なものならな。
PHP構文が使えるのは楽だ
0847nobodyさん2009/06/06(土) 03:19:48ID:???
へー
世の中いろいろな変わり種があるもんだな
0848nobodyさん2009/06/08(月) 14:19:55ID:???
>>839
高級言語とレTゎ抽象化も重要だょね
論理的レこ同等でょリ高速ナょ機能を求ぬナこら才一ノレぁセンブラに行き着ぃTしまぅょ
0849nobodyさん2009/06/08(月) 22:31:11ID:???
文字化けしてるのかと思ったがな。
0850nobodyさん2009/06/09(火) 00:50:39ID:???
848の書き込みは、これはこれで正解なのかな。
0851nobodyさん2009/06/09(火) 23:30:19ID:???
すでに懐かしさを感じる・・・
0852nobodyさん2009/06/10(水) 13:47:13ID:???
抽象化された日本語
0853nobodyさん2009/06/12(金) 05:05:33ID:???
(´・ω・`)PHPプロ!見ながら勉強始めたお。
0854nobodyさん2009/06/14(日) 14:28:25ID:???
お仕事でC#つかってVS.NETとかのIDEの便利さがわかってきたから(糞重いけど)
PHPでもIDE導入しようかと検討中
トータルでかかるコスト考えたら一時的な重さにイライラするほうが効率よさそう

とりあえずPHPEclipseあたりかなぁ
0855nobodyさん2009/06/14(日) 15:23:49ID:???
PHPEditor で十分。
0856nobodyさん2009/06/14(日) 18:28:18ID:???
PHPEclipseって、クラスメソッドの自動補完利く?
Eclipse+PDTからNetBeansに乗り換えた時はコレが効かなくてがっかりした。
0857nobodyさん2009/06/14(日) 20:02:29ID:???
今から調べてみるつもりだけど
ttp://techblog.ecstudio.jp/tech-tips/tech-tips/re-phpeclipse.html
一年前の生地だけど、ここみて選ぶならPHPEclipseのがいいのかなーと思った

PHPEditorはさすがにちょっと…^^;
0858nobodyさん2009/06/14(日) 21:30:09ID:???
Eclipseは重すぎなんだよね
もう少しレスポンス良くしてくれないと気持ちよく組めない
0859nobodyさん2009/06/14(日) 23:36:01ID:???
>>857
その記事Eclipseスレでも論破されてたけど
出現箇所の表示とかPDTでも昔からできるぞ
そいつが設定方法知らないだけじゃないかって話
0860nobodyさん2009/06/14(日) 23:55:03ID:???
IDEはどれも重いけどJavaVM使うやつはなんかこうワンテンポ遅い感じがするんだよなー
0861nobodyさん2009/06/15(月) 01:37:41ID:???
感じで語られても困ります
0862nobodyさん2009/06/15(月) 09:51:13ID:???
初回起動が重いのはしょうがないけど、起動しちゃえば軽いよ
メモリも1GB程度しか食わないし
0863nobodyさん2009/06/15(月) 13:56:39ID:???
なんだそのニワカ丸出しの発言は
メモリは使えば使うし、使わなければそんなに食わない
0864nobodyさん2009/06/15(月) 15:08:15ID:hQbzBooU
vistaは初回起動時にメモリにキャッシュするから2回目から断然起動が早くなる
0865nobodyさん2009/06/15(月) 18:37:19ID:???
しっかしエラーハンドリングをやってないプログラムが多いなぁ。
関数内でエラーが出たらどこで呼び出されてエラーが出たのか分からねぇや。
エラーハンドリングをやらないクソグラマは絶滅した方がいいな。
0866nobodyさん2009/06/15(月) 20:57:49ID:???
うちの中華コーダーは例外なんて全く考えないし
同じ処理をループにしようとかも思いつかないらしい
イライラがとまらない
0867nobodyさん2009/06/15(月) 22:18:32ID:???
中華は概ね優秀だと思う
それは中華だからじゃなくてコーダだからだ
0868nobodyさん2009/06/15(月) 23:03:28ID:???
と在日が申して降ります^^
0869nobodyさん2009/06/15(月) 23:38:24ID:???
下手に@とかで握り潰されるよりは、おとなしく死んだりNotice吐いたり例外ぶん投げてくれた方が原因特定ラクだけどな。
0870nobodyさん2009/06/16(火) 09:49:34ID:???
>>869
@握りつぶしは本当やめてほしいわ。速度も遅くなるし。
0871nobodyさん2009/06/16(火) 16:04:21ID:1A1uQnOj
>>869
客にNoticeとか見せたくないのもあるな。
例外はPHP5からなんでまず4の遺産を処分しないと
0872nobodyさん2009/06/16(火) 16:12:12ID:???
変数一つ一つチェックかけるの面倒なので、
クラスから登録→呼び出しを強制。

中身は配列登録と、書き込みと、呼び出すときのチェックだけwww
0873nobodyさん2009/06/16(火) 23:15:36ID:???
配列を丸ごと格納して
function get($key){
return isset($this->data[$key])?$this->data[$key]:null;
}
というメソッドを持つクラスを作ることは多いな。
$_POST、$_GETとかは全部専用のオブジェクトに格納する。主目的はグローバルの隠蔽だが。

>871
iniでerror_reportingとdisplay_errorsいじって対処しろ。
0874nobodyさん2009/06/17(水) 11:59:24ID:???
>>873
開発環境を用意できるならそこで対処だな
0875nobodyさん2009/06/17(水) 15:29:26ID:???
$_REQUESTはそもそもDIみたいなもの
0876nobodyさん2009/06/20(土) 06:10:00ID:???
>>875
どういうこと?
0877nobodyさん2009/06/20(土) 06:33:31ID:???
$_REQUESTはそもそもDIみたいなものということ
0878nobodyさん2009/06/20(土) 08:04:06ID:???
面白くない
0879nobodyさん2009/06/20(土) 08:09:53ID:???
自己紹介乙
0880nobodyさん2009/06/20(土) 17:52:24ID:75jb74IQ
ところで、関数の戻り値が配列だった時にその配列の特定要素を直接添字で指定する方法ってないの?
例えば C だと

puts((return_array())[0]);

みたいに出来るけど、HSPでこれっぽいこと試しても出来ないし情報も出てこない。
結局いちいち変数に保存しておかないとだめなのかな?
補完として指定添字の要素を返す関数みたいなもんも無さそうだし。
作るのは簡単だけどそれもモヤっとする。

誰も不便に思ってないのだろうか…?
0881nobodyさん2009/06/20(土) 18:01:51ID:???
HSP・・・?
0882nobodyさん2009/06/20(土) 18:03:42ID:???
うはー
HSPスレに毒されてた
0883nobodyさん2009/06/20(土) 19:11:19ID:???
誤爆か?
0884nobodyさん2009/06/20(土) 20:31:17ID:???
>>880
無い。
PHPは、評価→式 のモデルではなく、実行→オブジェクト のモデルだから。
0885nobodyさん2009/06/20(土) 20:46:15ID:???
配列の指定添え字の要素を返す関数がない・・・?

$array[$key];
0886nobodyさん2009/06/20(土) 20:54:21ID:???
>>884
なにそれ意味わかんない
初心者でもわかるように言うと、どういうこと?
0887nobodyさん2009/06/20(土) 20:57:27ID:zOuXJu5j
部分配列関数はあるのにね。
俺はat($array, $key)って関数を作って使ってる。

配列処理関数にarray_とか付いちゃう言語にあまり期待するなってことだな。
0888nobodyさん2009/06/20(土) 20:59:51ID:???
まさか連想配列を知らないとか言わないよね・・・
0889nobodyさん2009/06/20(土) 21:03:31ID:???
こゆこと?
zend_hash_find()じゃなくてzend_symtable_find()を使っているので整数キーも正しく扱える。

PHP_FUNCTION(array_indexof)
{
 HashTable *arr;
 char *key;
 int len;
 zval **entry;

 if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "hs" &arr, &key, &len) == FAILURE) {
  return;
 }

 if (zend_symtable_find(arr, key, len+1, (void **)&entry) == SUCCESS) {
  RETURN_ZVAL(*entry, 1, 0);
 }
 RETURN_NULL();
}
0890nobodyさん2009/06/20(土) 21:17:01ID:???
キーに整数以外を使う場合を特に連想配列って呼ぶ場合もあるようだけど、phpの配列は連想配列だろ?
0891nobodyさん2009/06/20(土) 22:27:40ID:???
$ary = array(3 => 'three', 2 => 'two', 1 => 'one');
foreach($ary as $v){
var_dump($v);
}

「数字添字の連想配列」と「配列」は似ているようでちょっと違う。
「全てが連想配列」の方が内部処理的にも妥当な評価。
0892nobodyさん2009/06/20(土) 22:57:15ID:???
クォート増えると汚くなるからeval好きじゃないけど
eval("$".func_return_array()."[key]")
とかかなぁ
独自の関数用意すんのもその関数理解するためのワンステップがアレな気がするしな

値がほしいだけならlist()で受け取るって手もあるけど
0893nobodyさん2009/06/21(日) 00:07:17ID:DAfvo/AX
>eval("$".func_return_array()."[key]")
え?
0894nobodyさん2009/06/21(日) 00:10:20ID:???
( Д) ゜  ゜
0895nobodyさん2009/06/21(日) 02:28:32ID:???
すげーバカあらわるwwwこれはないですよね
はい…

思う存分叩いてください反省してきます
0896nobodyさん2009/06/21(日) 05:33:00ID:???
PHPはスライスがないからなあ。PHPが他のスクリプト言語と比べて冗長になるのは、こういう言語機能の不足から来るんだよなあ。
0897nobodyさん2009/06/21(日) 11:53:12ID:???
スライスって?
0898nobodyさん2009/06/21(日) 12:21:00ID:DAfvo/AX
($a, $b)=aplit(',', 'aaa,bbb') ;
こういう書き方がしたいわけですね。
0899nobodyさん2009/06/21(日) 13:14:59ID:???
俺もアプリットしてえ
0900nobodyさん2009/06/21(日) 13:27:56ID:???
($year,$day) = (split('-','2009-06-21'))[0,2];
0901nobodyさん2009/06/21(日) 20:55:11ID:???
ほかの言語やってて久しぶりにPHPにもどるともどかしい気持ちになるんだよなw
配列作るときのarrayとか書くのも結構めんどい
0902nobodyさん2009/06/22(月) 00:35:16ID:???
みんなのphpのバージョン教えてちょ!
0903nobodyさん2009/06/22(月) 00:49:49ID:2UIy9ouO
客先によって色々。
個人で借りてるサーバは
$php --version
PHP 5.1.6 (cli) (built: Apr 7 2009 08:00:04)
Copyright (c) 1997-2006 The PHP Group
Zend Engine v2.1.0, Copyright (c) 1998-2006 Zend Technologies
だ。
0904nobodyさん2009/06/22(月) 03:56:57ID:???
5.2.xだお
0905nobodyさん2009/06/22(月) 09:54:55ID:???
たしかにarrayだけでqiqにしたくなる
0906nobodyさん2009/06/22(月) 10:29:15ID:???
5.2.9。
この前のメンテで上げてるなあぁ
0907nobodyさん2009/06/22(月) 15:11:18ID:???
みんなありがとう。
concreat5を試そうと思ったら、php5を要求されたから、
そろそろ移行時期かなとおもい、皆はどうなのかと思い確認させてもらいました。
0908nobodyさん2009/06/22(月) 16:15:26ID:???
ttp://itpro.nikkeibp.co.jp/article/COLUMN/20080508/301027/
にあるコードを使って
同じ内容のメールを返させるのとファイルに保存するようなのを書き足したPHPファイルをつくったんですけど
メールが返ってくるところまではうまくいったんですけど
ファイルに保存がうまくいきません

mail($mail_address,,$diary_subject,$diary_body);
write("dat/test.dat",array($diary_subject,$diary_body));
------------------------------------------------
function write($filename, $input)
{
$input=serialize($input);
$fp=fopen($filename,"w");
flock($fp, LOCK_EX);
fputs($fp, $input);
flock($fp, LOCK_UN);
fclose($fp);
}
ちゃんとdatはchmod 733してあります。
何が原因になりそうでしょうか?
0909nobodyさん2009/06/22(月) 16:41:28ID:???
スレチでしたね サーセン
0910nobodyさん2009/06/22(月) 16:47:18ID:???
上手くいかないではなくエラー内容をチェック
0911nobodyさん2009/06/22(月) 23:26:19ID:???
相対パスを使うときは誰が何処で実行すんのかを常に意識してないとダメだぞ
0912nobodyさん2009/06/23(火) 04:22:25ID:???
はい
0913nobodyさん2009/06/30(火) 11:32:05ID:???
検索キーワードを split するスクリプト書いてるんですが、
なにかそういう系のいいサンプルって知りませんか?

全角、半角スペースをパターンに文字列を分割、
でもダブルクォーテーションでかこわれた部分は分割せず…
とかいろいろやってたら、正規表現を使った処理が意外とだらだらと長くなってしまうんです。
0914nobodyさん2009/06/30(火) 12:31:49ID:???
>>913
str_replace(' ', ' ', $input);
$keywords = str_getcsv($input, ' ');
0915nobodyさん2009/06/30(火) 12:33:32ID:???
あ、
$input = str_replace(' ', ' ', $input);
ね。

思いつきだから正しく動くかはしらん。
0916nobodyさん2009/06/30(火) 12:48:46ID:???
str_replace だと EUC-JP の全角空白の扱いおかしい時があるから
ereg_replace が安全
0917nobodyさん2009/06/30(火) 13:50:22ID:???
アドバイスありがとうございます。

$input = 'ワード1 "ワ ー ド 2" ワード3';



[0] -> ワード1
[2] -> ワ ー ド 2
[3] -> ワード3

このように分割したいのですが、preg_matchとか使ってむりやり分割する方法しか思いつかず、
どんなやりかたが王道なのかわからずに困っています。
0918nobodyさん2009/06/30(火) 14:38:55ID:???
$input = 'ワード1 "ワ ー ド 2" ワード3';
var_export(explode('"', $input));
0919nobodyさん2009/06/30(火) 14:49:40ID:???
お前は何を言ってるんだ
0920nobodyさん2009/06/30(火) 21:49:14ID:???
>>916
ereg系は5.3で非推奨?になるよ。
0921nobodyさん2009/06/30(火) 22:09:35ID:???
Perlだったら、モジュールがあるな。
http://search.cpan.org/~chorny/Text-ParseWords-3.27/ParseWords.pm
PHPで探してないんだったら、上のを参考にして自分でパーサーを書くしかないんでは。
0922nobodyさん2009/06/30(火) 22:15:51ID:ToOf0Y/8
初心者なのだがどなたか教えてくれまいか

<?php
$number = 100;
echo "<p>変数の値は $number です";
echo '<p>変数名は $number です';

?>

変数の値は や 変数名は ってやつがうまく表示してもらえないのだが
なぜですか??
0923nobodyさん2009/06/30(火) 22:19:02ID:???
「うまく表示してもらえない」っていわれても判らないんだが
どういう結果が欲しくて、実際どうなってるのか教えてくれ
0924nobodyさん2009/06/30(火) 22:24:36ID:ToOf0Y/8
えとですね、理想としては
echo "<p>変数の値は $number です";
これが『変数の値は100です』
となってほしくて
echo '<p>変数名は $number です';
こっちが『変数名は$numberです』
となってほしいのです。
でも表示結果は
?????l??@100 ??

????? $number ??
こんな感じですね
0925nobodyさん2009/06/30(火) 22:26:14ID:???
>>924
文字コードはあってる?
0926nobodyさん2009/06/30(火) 22:28:40ID:???
>>924
まず、ブラウザのエンコード(文字コード)の設定で文書のとあわせてみようね
それから、htmlで
<meta http-equiv="Content-Type" content="text/html; charset=shift_jis">
みたいなの書こう
0927nobodyさん2009/06/30(火) 22:28:50ID:ToOf0Y/8
やっぱり文字コードの指定とかあるんですか><;
ブラウザがGoogleChromeなのですが
文字コードはどうやって変更したらいいでしょう?
0928nobodyさん2009/06/30(火) 22:29:20ID:???
>>924
それから
echo "<p>変数の値は $number です";

echo "<p>変数の値は {$number} です";
って書くと変数名が確実に処理される。
0929nobodyさん2009/06/30(火) 22:36:38ID:ToOf0Y/8
あっ
エンコードでSHIFT JISってやつに変えてみたら
上手く表示されました><
ありがとうございました・ω・
あとこの<p>というのはどういった意味があるのでしょうか?
0930nobodyさん2009/06/30(火) 23:30:39ID:???
>>929
段落。パラグラフのp。
0931nobodyさん2009/06/30(火) 23:30:55ID:???
>>929
ブラウザがまずWebサイトにアクセスする。
んで、どのコードで表示するかってのは、
HTMLのヘッダにあるMETAタグで読むんだ。

だから、PHPで出力するHTMLの最初の方
に、まず文字コード設定のMETAタグを書
いておこう。

通常、PHPで出力される文字コードは、PHP
のコードが書かれているファイルと同じ文字
コードになるよ。

Shift-JISでコードを書いてるなら、Shift-JIS
の文字コード宣言のMETAタグを出力するよ
うにしておいたほうがいい。じゃないと、いまの
ブラウザで普通に表示されていても、見れな
い環境も出てくると思うから。
0932nobodyさん2009/07/01(水) 00:06:52ID:???
PHPとかよりもっと基本的な部分の勉強が足りてないと見える

Webで使うつもりだろうし、まずはHTMLとかXHTML、できればStylesheetも
それに、WebクライアントやWebサーバの仕組み、文字コードの扱いなんかを
一通りは触っておかないと理解していないと
PHPを覚えてもあまり意味がない気はするぽん

階段を上るように、段階を分けて勉強していくといいと思うお
1. CGIなどが扱えないようなレンタルサーバでも公開可能な
 (静的な)ウェブサイトの作成方法を理解する
2. ローカルにウェブサーバを設置し、サーバの設定方法や
  サーバの仕組み、クライアントの仕組みなんかを理解する
3. 動的に生成されるサイトを作成してみる
みたいなカンジ
0933nobodyさん2009/07/01(水) 01:00:53ID:gWTAL2bR
皆様お返事ありがとうございます><

なるほどです。。。
自分でも少しずついろいろと調べてみてがんばって行こうと思います

まずはHTMLから始めるといった形が理想なのでしょうか?
0934nobodyさん2009/07/01(水) 01:02:04ID:???
くだすれPHPとマルチ乙
0935nobodyさん2009/07/01(水) 03:45:08ID:???
>>933
そうだね
まずは静的HTML
文字コードの話も普通はそこでぶちあたる壁
絶対リンクと相対リンクとか。

そしてスタイルシートCSSね
そんでようやくPHPだね
0936nobodyさん2009/07/01(水) 06:49:30ID:???
>>921
サンクスです
0937nobodyさん2009/07/01(水) 07:32:06ID:???
<p>がわからん、とかいうレベルなら、
まずHTMLを1ヶ月じっくりと勉強
するところからはじめるべき。
レス数が900を超えています。1000を超えると表示できなくなるよ。