【PHP】下らねぇ質問はここに書き込みやがれpart14
レス数が1000を超えています。これ以上書き込みはできません。
0001nobodyさん
2005/12/18(日) 10:10:12ID:???ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
次スレは>>970あたりが建てて下さい
過去スレは>>2
0930nobodyさん
2006/01/13(金) 11:35:19ID:???0931nobodyさん
2006/01/13(金) 11:41:27ID:???だから初心者でも使える仕様になっているんだしね。
0933nobodyさん
2006/01/13(金) 11:55:00ID:???Notice対応の方がバグ潰しよりよっぽど手間にならないか?
何のために省略ができるようになってるのか考えると不毛だと思うんだけどな。
0934nobodyさん
2006/01/13(金) 12:05:00ID:???手間とも思わないけど。
0935nobodyさん
2006/01/13(金) 12:10:52ID:???0936nobodyさん
2006/01/13(金) 12:18:10ID:???$new_array = array();
foreach ($array as $item) {
$new_array[] = $item . '.html';
}
これを一発でやってくれる関数はありますか?
マニュアル読んだのですが、それらしいのが見つかりませんでした。
しかしPHPならあるんじゃないかと思って、質問してみました。
0937nobodyさん
2006/01/13(金) 12:31:04ID:???$new_array = array_map(create_function('$v', 'return "$v.html";'), $array);
0938889
2006/01/13(金) 12:31:37ID:???>>936
俺に出来るのは
<?php
$array = array('foo', 'bar', 'baz');
array_walk($array, create_function('&$v', '$v = $v.".html";'));
var_dump($array);
?>
ここまでだ
0939nobodyさん
2006/01/13(金) 13:02:14ID:???そんな変数名がかぶるような長いブロック書いちゃダメ
(ひょっとすると全部グローバルかもしれんが)
細かく function で分けるべし
class にしてしまえば必要なものだけ var で(class内で)
共有できる
オブジェクト指向とか考えなくてもメリットは大きいぞ
0940nobodyさん
2006/01/13(金) 13:06:12ID:???できればそうしたいのですが、
70kBほどのXMLのオブジェクトを扱いたいので、 それを値渡しするのはできるだけ避けたいと考えています。
0941nobodyさん
2006/01/13(金) 13:27:19ID:???値渡し(&を使わず代入)を避ける必要がない。素直に書けば不必要なコピーは起こらない。
パフォーマンス改善を目的とするリファレンス渡しはいかなる場合も避けるべき。
0942nobodyさん
2006/01/13(金) 13:29:31ID:???そのものズバリという関数はないということですね。
素直に関数を定義します。
ありがとうございました。
function array_suffix($array, $suffix) {
if (! $array) return NULL;
$array2 = array();
foreach ($array as $item) {
$array2[] = $item . $suffix;
}
return $array2;
}
0943nobodyさん
2006/01/13(金) 14:14:30ID:???贅沢なやつだな。
$new_array = preg_replace('/$/', '.html', $array);
0944nobodyさん
2006/01/13(金) 16:46:16ID:???分かりました。
PEARのDBのサンプルソースに&が必ずついているので、参照渡しは必須のものだと思っていました。
ありがとうございます。
0945nobodyさん
2006/01/13(金) 21:35:56ID:???0946nobodyさん
2006/01/13(金) 23:12:04ID:???そんでもってPHPはその機能は内蔵してないか。
php.iniで入出力文字コードの設定するだけじゃないの?
0947nobodyさん
2006/01/14(土) 00:44:57ID:???Perlは知らないけど、>>946の話を聞く限り
mb_http_output() と mb_internal_encoding() あたりじゃないかと思われ。
php.iniいじったり ini_set() 使うのもありだけど。
0948nobodyさん
2006/01/14(土) 04:30:51ID:???変数への代入等のPHP文をそのファイルに記述してrequireするのと、file()で読み込んで本体のスクリプトで処理するのとではどっちの方が軽快に動くんでしょうか?
0949nobodyさん
2006/01/14(土) 04:38:46ID:???0950nobodyさん
2006/01/14(土) 07:45:24ID:aUotD7Tf0951nobodyさん
2006/01/14(土) 11:56:08ID:???よく分からないが…
逆に聞きたい。なんでそんなことしようと思ったの?
0952nobodyさん
2006/01/14(土) 12:46:22ID:???0953nobodyさん
2006/01/14(土) 13:00:35ID:???0956nobodyさん
2006/01/14(土) 15:29:15ID:???array じゃないのを foreach して出る Warning を
検出するにはどうしたらいいでしょう?
0958nobodyさん
2006/01/14(土) 15:36:54ID:???0959nobodyさん
2006/01/14(土) 15:43:29ID:/np9stAGDBに入っている日付型データがn分経過しているかどうかを判定したかったんですが、
日付関数でn分経過した日付型を返すようなものが見あたりませんでした。
よい方法ないでしょうか?
0960nobodyさん
2006/01/14(土) 15:49:01ID:???0961nobodyさん
2006/01/14(土) 15:49:38ID:???0962nobodyさん
2006/01/14(土) 15:52:43ID:???起きたエラーの検出じゃなくて
function_exists と is_array でチェックするって方法は?
0963nobodyさん
2006/01/14(土) 15:56:49ID:???全部の関数呼び出しで書き間違いをチェックしてられないから
文法チェックみたいな形で一気に検出したい、ってことじゃないの?
理屈からいくと動的な関数呼び出しも可能なPHPで完璧なチェックってのは不可能なんだけど。
配列の方はis_arrayでチェックするのは割と基本だよね。
ま、直前で配列初期化してるようなものまで書き間違いによるミスが無いか
チェックしようとしてるんじゃないかと思ったりするけど。
書き間違いの可能性まで考えたらis_arrayに渡してる引数からして疑われるわけだし。
0967nobodyさん
2006/01/14(土) 16:14:01ID:???基本的には全ての条件パターンでのロジックを通して実行してみるってのは
プログラムテストの基本であり、それもできないやつはプログラマ失格なんだけどな。
(で、システム全体で全条件を通すのは非常に難しいので、関数単位で単体テストとかするわけだけど)
0968nobodyさん
2006/01/14(土) 16:26:28ID:???[.\n]って間違ってる?これを使うとなぜかうまくいかないです
0969964
2006/01/14(土) 16:29:19ID:???おっしゃることもっともです。
とはいえ、全チェックや二重チェック、地道にテストをしても
人間がやることなんで抜けがあるのでシステム側で検知したいんです。
0970nobodyさん
2006/01/14(土) 16:32:28ID:???事前にチェックする方法ってのは原理的に存在しないよ。
それって結局、ロジックによって通過先が変われば状態が変わってしまうもの。
諦めたら?
0971nobodyさん
2006/01/14(土) 16:41:20ID:???間違ってる。[〜] の中での「.」はただの「.」という文字であって全ての文字は表さない。
「.|\n|\r」じゃないの?
0972nobodyさん
2006/01/14(土) 16:43:32ID:???いやー
だからね、その方が難しいんだって
エラーハンドラの定義でも例外処理でもいいけど、その分
作り込む量は多くなるし、エラーの処理も全部チェックしなきゃ
いけないわけ。検知ったってさ、検知だけできてもしゃーないわけ
でしょ。何をしたいのか知らないけど、要求レベルがかなり
高いと思うよ
0973968
2006/01/14(土) 16:45:43ID:???めちゃくちゃはまってたんでマジ助かりました、ありがとう
0974969
2006/01/14(土) 16:49:39ID:???ですね。例外を用意せずに
set_error_handler() のように Fatal や Warning, Notice をキャッチして
その場所をメールで報告、とかできれば楽だと思ったのです。
ありがとうございました。
0975nobodyさん
2006/01/14(土) 16:53:29ID:???その目的って事前チェック?それとも致命的エラーを出してもユーザに見えなければOK?
後者だったらset_error_handler()でとりあえずお待ちください画面でも出してお茶濁しとけば。
0976950
2006/01/14(土) 16:54:40ID:aUotD7TfDBのデータを操作するDAOクラス(基本DAOクラス)があるんですが、
それのextends元クラス(DBクラス)を変更することで、
対応DB(MySQLなど)を選択することができるんです。
で、普段はこの基本DAOクラスをさらに継承した
個別アプリ用のクラス(拡張DAOクラス)を作成して、利用する形です。
基本DAOクラスはどのDBでも同じ内容(メソッド)なので、
拡張DAOクラスからDBを指定して、基本DAOクラスのextends元DBクラスを
選択できればと思った次第です。
今はextends元だけが異なる基本DAOクラスを複数用意していますが、
これは重複していて無駄だし、ソース改良時も複数ファイルで同じ変更を
しなくてはならず手間です。
設計を変えたほうがいいのかなあ。でもすぐにはいい方法を思いつきません。
0977nobodyさん
2006/01/14(土) 16:55:44ID:???0978nobodyさん
2006/01/14(土) 17:02:06ID:???class定義の1行しか違わないんなら、元になるソースファイルを1個だけ用意して
それをベースに改良等を行い、修正したらバッチでDBの数だけ置換コピーして
実際に使用するクラス定義ファイルを生成する。みたいな手順にしちゃえば?
動的に実行時指定できるようにするほどの内容には思えないけど。
0980nobodyさん
2006/01/14(土) 17:03:08ID:???extends したクラスをインスタンス化したものを保持する
ラッパークラスを作る
外からの操作はそのラッパーオブジェクトを介して行う
0981950
2006/01/14(土) 17:23:30ID:aUotD7Tf$this->wrapper->method() となるのはちょっとやだなと思ってたのですが、
よく考えると、それをさらにラップすれば、$this->method() で取り扱えますね。
継承の階層が多くなっちゃいますけど、方法としてはこうなるのかな。
0984nobodyさん
2006/01/14(土) 18:37:40ID:ILCMT976print("<strong>"$data[0]."</strong>は面白い\n");
こうすると「syntax error, unexpected T_VARIABLE」という
エラーが出てしまいます。
0986985
2006/01/14(土) 18:55:25ID:???print("<strong>".$data[0]."</strong>は面白い\n");
「.」が抜けてるだけだ。
0988nobodyさん
2006/01/14(土) 18:57:35ID:???同様に引数区切りなどの , は後ろに空白を空けるようにしてる。
0989nobodyさん
2006/01/14(土) 19:12:43ID:ILCMT976もっとガンバロ((`・ω・)
0990nobodyさん
2006/01/14(土) 19:53:46ID:???なんかここって本スレより勢いある上に
本スレよりまともな質問も多い気がするのは気のせい?w
0992nobodyさん
2006/01/14(土) 20:07:28ID:???【PHP】下らねぇ質問はここに書き込みやがれpart15
http://pc8.2ch.net/test/read.cgi/php/1137236771/
0993nobodyさん
2006/01/14(土) 20:28:39ID:???0995nobodyさん
2006/01/14(土) 20:29:38ID:???【PHP】下らねぇ質問はここに書き込みやがれpart15
http://pc8.2ch.net/test/read.cgi/php/1137236771/
0996nobodyさん
2006/01/14(土) 20:29:46ID:???【PHP】下らねぇ質問はここに書き込みやがれpart15
http://pc8.2ch.net/test/read.cgi/php/1137236771/
0997nobodyさん
2006/01/14(土) 20:30:09ID:???【PHP】下らねぇ質問はここに書き込みやがれpart15
http://pc8.2ch.net/test/read.cgi/php/1137236771/
0998nobodyさん
2006/01/14(土) 20:30:17ID:???【PHP】下らねぇ質問はここに書き込みやがれpart15
http://pc8.2ch.net/test/read.cgi/php/1137236771/
0999nobodyさん
2006/01/14(土) 20:30:42ID:???【PHP】下らねぇ質問はここに書き込みやがれpart15
http://pc8.2ch.net/test/read.cgi/php/1137236771/
1000nobodyさん
2006/01/14(土) 20:30:54ID:???次スレ
【PHP】下らねぇ質問はここに書き込みやがれpart15
http://pc8.2ch.net/test/read.cgi/php/1137236771/
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。