PHP上級者が集まるスレ
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2007/01/14(日) 16:53:46ID:???我こそはPHPプロフェッショナルだという方の書き込みをお待ちしております。
0053nobodyさん
2008/10/10(金) 09:40:02ID:???0054nobodyさん
2008/10/31(金) 19:40:09ID:Eo+dqOlVcount()に渡したときのカウント数について教えて頂けないでしょうか。
カウント数がどうにも解せないのです。
↓これを実行すると、なぜか結果として4が表示されてしまいます。
$s = "aaa111aaa222\naaa111aaa222\naaa111aaa222\naaa111aaa222";
preg_match_all('/(.+111)(.+222)/', $s, $match);
echo count($match[0], COUNT_RECURSIVE);
では、preg_match_all()が返す多元配列と同等の多元配列を作って、
それをcount()に渡してみます。
↓この結果は3になる。この結果は正しい。
$match = array(
array(0, 1, 2),
array(0, 1, 2),
array(0, 1, 2),
array(0, 1, 2)
);
echo count($match[0], COUNT_RECURSIVE);
preg_match_all()の返す多元配列は特殊なものなのでしょうか?
(うーん、そんな馬鹿な・・・)
0055nobodyさん
2008/10/31(金) 20:45:48ID:???まずなぜ$match[0]をvar_dumpしてみようと思わないのかな
↓結果
array(4) {
[0]=>
string(12) "aaa111aaa222"
[1]=>
string(12) "aaa111aaa222"
[2]=>
string(12) "aaa111aaa222"
[3]=>
string(12) "aaa111aaa222"
}
0056nobodyさん
2008/10/31(金) 23:58:11ID:???phpからJavaのJNIみたいに直接libiconv.soを呼び出せないかと思ったのですが
出来ますか?
0057nobodyさん
2008/11/01(土) 00:08:17ID:???0058nobodyさん
2008/11/01(土) 00:20:57ID:???0059nobodyさん
2008/11/01(土) 00:23:11ID:???0060nobodyさん
2008/11/01(土) 07:37:24ID:/2wL5ARzpreg_match_all()の結果と同じ配列を作るには
$match[0]=array("全体1","全体2","全体3");
$match[1]=array("部分1","部分2","部分3");
$match[2]=array("部分A","部分B","部分C");
と、しないといけなかったんですね・・・。
ありがとうございます。なぞが解けました。
多元配列を正しく理解していませんでした。
006260
2008/11/01(土) 17:51:55ID:/2wL5ARzすいません。どういう意味なのでしょうか?
0063nobodyさん
2008/11/01(土) 18:09:48ID:???61じゃないけど>>60のほうが意味わからない。
何を想定してどんなふうに想定外だったのかということがはっきりしないな。
006460
2008/11/01(土) 18:17:53ID:/2wL5ARz要するに、preg_match_all()でマッチしたときに返される多元配列と
同じ形の多元配列を自分で作るにはどうしたらいいのか?
ということがわからなかったです。
0065nobodyさん
2008/11/01(土) 18:22:04ID:???0066nobodyさん
2008/11/01(土) 18:44:31ID:???array(4) {
[0]=>
string(12) "aaa111aaa222"
[1]=>
string(12) "aaa111aaa222"
[2]=>
string(12) "aaa111aaa222"
[3]=>
string(12) "aaa111aaa222"
}
のcountは4になって当然。
なのに3になると思ってたのはなぜ?
要点だけ言われても余計分からないから全部言ってくれ。
いや解決したんならもういいんだけど、単なる雑談として。
006760
2008/11/01(土) 19:36:22ID:/2wL5ARz//�@///////////////////////
$s = "aaa111aaa222\naaa111aaa222\naaa111aaa222\naaa111aaa222";
preg_match_all('/(.+111)(.+222)/', $s, $match);
echo count($match[0], COUNT_RECURSIVE).'<br>';
//�A///////////////////////
$match[0]=array("aaa111aaa222", "aaa111", "aaa222");
$match[1]=array("aaa111aaa222", "aaa111", "aaa222");
$match[2]=array("aaa111aaa222", "aaa111", "aaa222");
$match[3]=array("aaa111aaa222", "aaa111", "aaa222");
echo count($match[0], COUNT_RECURSIVE).'<br>';
//�B///////////////////////
$match = array(
array("aaa111aaa222", "aaa111", "aaa222"),
array("aaa111aaa222", "aaa111", "aaa222"),
array("aaa111aaa222", "aaa111", "aaa222"),
array("aaa111aaa222", "aaa111", "aaa222"));
echo count($match[0], COUNT_RECURSIVE).'<br>';
006860
2008/11/01(土) 19:37:04ID:/2wL5ARzたびたびすいません。
まだ解決していませんでした。
�@は4が出力されます。
�Aは3が出力されます。
�Bは3が出力されます。
私は�@�A�Bはすべて、3が出力されるのが正しいと思っていました。
なぜなら$match[0]に入っている配列要素は3つなので。
>>65さん
�Bのケースと同じでしょうか?
これだと�@と同じ結果にはなりませんでした。
申し訳ありませんが、もう少し具体的にお願いできないでしょうか?
0069nobodyさん
2008/11/01(土) 20:19:34ID:???いや66で書いたのと同じことを繰り返すことになるけど
�@の$match[0]に入っているのは
array(4) {
[0]=>
string(12) "aaa111aaa222"
[1]=>
string(12) "aaa111aaa222"
[2]=>
string(12) "aaa111aaa222"
[3]=>
string(12) "aaa111aaa222"
}
だろ?なんでそれが3になると?
正規表現を誤解しているのか、count関数の挙動を誤解しているのか、さっぱり分からん。
0070nobodyさん
2008/11/01(土) 20:23:04ID:???0071nobodyさん
2008/11/03(月) 02:12:33ID:???無名関数とかラムダ関数とかクロージャとか静的遅延束縛とか、
理解できないです
そういったキーワードを検索して楽しそうに書いてたり、
愚痴ったりしてるブログを見ると、理解できない自分が寂しいです
情報系の大学に行った方がいいんでしょうか
独学は無理っぽいです
0072nobodyさん
2008/11/03(月) 02:23:37ID:???0073nobodyさん
2008/11/03(月) 22:29:26ID:???PHPは手っ取り早くWebアプリを開発するためのツールという側面が強いから、
そこらへんのことを学びたいなら他の言語で勉強した方がいいと思う。
PHPは最初は取っつきやすいけど、プログラミングの本質を学ぼうとするとすぐに壁に突き当たる。
最近の言語ではPythonが学習に向いていると思うけど、なにしろ日本語の情報が少ないしな。
0075nobodyさん
2008/11/07(金) 20:58:40ID:???Eclipse+phppluginは微妙に使いづらそうな印象を受けるし
sjisじゃないと文字化けするとか不穏な情報もある(古いが)
phpエディタはよさそうな印象だが使ってはいない
経験者情報plz
0076nobodyさん
2008/11/07(金) 21:00:43ID:???0077nobodyさん
2008/11/07(金) 21:41:19ID:???0078nobodyさん
2008/11/08(土) 00:26:17ID:???0079nobodyさん
2008/12/14(日) 00:39:45ID:???生産性という面で言うとやはりASP.netの方が高いのでしょうか?
0080nobodyさん
2008/12/14(日) 01:12:48ID:???0081nobodyさん
2008/12/14(日) 02:15:12ID:???0082nobodyさん
2008/12/14(日) 09:59:12ID:???あんた方本気で言ってるの?
ASP.netだと画面のデザインなんてマウスのドラッグで簡単に出来るよ。
であとはサーバ側の処理を記述するだけで完了する。
どう考えてもASP.netの方が生産性が高い、としか思えないのですが。
もっともASP.netの場合にはライセンス料とかの兼ね合いもあって
同じスペックのレンタルサーバを借りたとしても高いけどね。
0083nobodyさん
2008/12/14(日) 11:54:39ID:???0084nobodyさん
2008/12/14(日) 13:25:18ID:vrT8sAojformからアップロードしたzipファイルを解凍するスクリプト書いてるんですが、
解凍する前にzipファイルの破損をチェックするのってどうやったらできますか?
0085nobodyさん
2008/12/14(日) 14:07:31ID:???0087nobodyさん
2008/12/14(日) 14:32:36ID:???一概にいえないだろ。
PHPでもView部分はWebオーサリングソフト使ってテンプレートエンジンかませば同様に
GUIで画面のデザインできるし、だいたいView部分だけを根拠に「どう考えても」は飛躍しすぎ。
0089nobodyさん
2008/12/25(木) 06:13:30ID:???(PHP 5.2.3 + PostgreSQL 8.3.1です)
(1)書き込み(insert)時は、bindParamの第3引数にPARAM_LOBを指定して
正常に書き込める。
ex. $sth->bindParam(":data", $data, PDO::PARAM_LOB);
(2)読み出し(select)時は、bindColumnの第3引数にPARAM_LOBを指定すると
バイナリデータの読み出しが正常にできない(サイズが異なる)
ex. $sth->bindColumn(":data", $data, PDO::PARAM_LOB);
(2)でPDO::PARAM_LOBの代わりにPDO::PARAM_STRを指定すると正しく読み出せます。
これはPDOの不具合なんでしょうか?
それとも、これが仕様なのでしょうか?
0091nobodyさん
2009/01/08(木) 05:23:45ID:???PEAR::HTTP_Requestでは未サポートであることがわかりました。
PHPからwgetを起動する方法も考えましたが、シンプルな方法とは
いえないので、PHPだけで実現したいです。
良い方法をご存知の方、教えてください。
0092nobodyさん
2009/03/03(火) 01:30:53ID:hdsn1ZlDちょっと遅いレスだけどflags引数使え
PREG_PATTERN_ORDER
$matches[0] はパターン全体にマッチした文字列の配列、
$matches[1] は第 1 のキャプチャ用サブパターンにマッチした文字列の配列、
といった順番となります。
$match=array(
array('aaa111aaa222','aaa111aaa222','aaa111aaa222','aaa111aaa222',),
array('aaa111','aaa111','aaa111','aaa111',),
array('aaa222','aaa222','aaa222','aaa222',),
);
PREG_SET_ORDER
$matches[0]は 1 回目のマッチングでキャプチャした値の配列、
$matches[1]は 2 回目のマッチングでキャプチャした値の配列、
といった順序となります。
$match=array(
array('aaa111aaa222','aaa111','aaa222'),
array('aaa111aaa222','aaa111','aaa222'),
array('aaa111aaa222','aaa111','aaa222'),
array('aaa111aaa222','aaa111','aaa222'),
);
どっちかっていうとSET_ORDERの方が○行目の\1,\2みたいな感じで俺は好きだ
0093nobodyさん
2009/03/28(土) 02:06:29ID:???PHPのデバッグ実行を行おうとしているのですが、PHPスクリプト内に設定した
ブレークポイントで止りません。
一体どうすればブレークポイントを止める事が出来ますか?
【ブレークポイント上のエラー】
・ブレークポイントは、現在の設定ではヒットしません。
Unbound break point
【IEの設定】
次のチェックを外しています。
・スクリプトのデバッグを使用しない(Internet Explorer)
・スクリプトのデバッグを使用しない(その他)
【php.iniの設定】
[DBG]
debugger.enabled = true
debugger.profiler_enabled = true
debugger.JIT_host = 127.0.0.1
debugger.JIT_port = 7869
debugger.enable_session_cookie = true
extension=php_dbg.dll
;;;;;;;;;;;;;;;;;;;
; Module Settings ;
;;;;;;;;;;;;;;;;;;;
0095nobodyさん
2009/06/17(水) 22:51:20ID:???0096nobodyさん
2009/11/30(月) 18:40:16ID:???0097nobodyさん
2009/12/01(火) 22:13:32ID:???0098nobodyさん
2010/01/01(金) 22:37:35ID:???0099nobodyさん
2010/01/02(土) 00:26:34ID:???0100nobodyさん
2010/01/04(月) 03:31:33ID:???0103nobodyさん
2010/01/14(木) 19:40:22ID:???0104nobodyさん
2010/03/11(木) 17:14:56ID:???0105nobodyさん
2010/03/27(土) 19:43:37ID:???0106nobodyさん
2010/04/11(日) 19:33:45ID:???ここで聞いたほうがいい。
http://pc11.2ch.net/test/read.so/php/1172205352/
0107nobodyさん
2010/06/12(土) 00:33:14ID:RYMW4bMX0108nobodyさん
2010/06/12(土) 03:36:45ID:???上級者じゃないけど
0109nobodyさん
2010/06/12(土) 06:41:28ID:???PEARとか使うだけでもある意味オブジェクト指向だしな
0110nobodyさん
2010/06/12(土) 09:20:35ID:???PHP5以上なら常に使えよ。
0111nobodyさん
2010/06/12(土) 23:27:14ID:???0112nobodyさん
2010/06/13(日) 04:09:02ID:???<?php
$makehw=new makehw();
$echohw=$makehw->echo_helloworld("hello world!");
echo $echohw;
exit;
class makehw {
function __construct() {
$this->str="hello world!";
return $str;
}
function echo_helloworld($indata) {
echo $this->str;
return '';
}
}
0113nobodyさん
2010/06/13(日) 12:42:32ID:???0115nobodyさん
2010/06/13(日) 14:35:11ID:???0117nobodyさん
2010/06/13(日) 17:17:49ID:???初心者が上級者のふりして書き込む厨房専用スレ?
0118nobodyさん
2010/06/15(火) 09:30:26ID:???0119nobodyさん
2010/06/18(金) 16:40:47ID:???http://livedoor.2.blogimg.jp/agomesu/imgs/4/f/4faec292.png
ばらまこうぜ!
0120nobodyさん
2010/06/21(月) 14:15:37ID:CBlb9XeO0121nobodyさん
2010/06/22(火) 02:37:39ID:???0123nobodyさん
2010/06/22(火) 20:31:27ID:???2chのクローンなんてblogサンプルがそこらじゅうに出回ってるし、
簡単に作れる。寧ろそのサンプルの方が2chより高機能だろ。
0124nobodyさん
2010/06/25(金) 21:53:45ID:???0125nobodyさん
2010/06/26(土) 21:56:49ID:nh7WDbu8いや、んなこと聞いてない・・・・
0126nobodyさん
2010/06/27(日) 15:28:48ID:???0127nobodyさん
2010/06/27(日) 17:00:45ID:???0128nobodyさん
2010/06/28(月) 12:18:08ID:???0129nobodyさん
2010/06/28(月) 13:25:54ID:WPgH34jWそれぞれをグラフのy軸の最大値、最小値としていましたが、それだと配列内の
最大値、最小値のスケールでしかグラフが生成できません。
なので、ある程度範囲を持たせる為に
例えば最大値が1001の場合
1、配列中の最大値の桁数を取得して(=4)
2、桁数の頭に1をつけて(1000)
3、2、の桁数を整数で切り上げ除算して(2)
4、最後に3、に2、の桁数を乗算した(2000)
をy軸の最大値にしたいと思います。
2の部分が不明瞭で皆さんのお知恵をお借りしたく思います。
よろしくお願いします
0130nobodyさん
2010/06/28(月) 15:39:09ID:PXXo1bnrグラフ最大値 = 最大値 + グラフの余白値
グラフ最小値 = 最小値 - グラフの余白値
これぐらいでいんでねーの
グラフ最小値がマイナスになったらゼロにすればいいでしょう
0132nobodyさん
2010/06/28(月) 20:00:36ID:???0134nobodyさん
2010/06/28(月) 20:13:47ID:???0136nobodyさん
2010/06/30(水) 11:55:48ID:???明るいoptional
みんな家中なんでもoptional
0137nobodyさん
2010/07/07(水) 01:15:08ID:???一発で雑魚だと分かるね。
protectedの意味を知らないらしいw
0138nobodyさん
2010/07/07(水) 04:26:58ID:???0139nobodyさん
2010/07/07(水) 08:01:03ID:???PHPでは使わないなぁ。
public と private しか使わない。
PHPごときで何を粋がっているんだか。
0143nobodyさん
2010/07/07(水) 23:02:03ID:???今は、ASP.netだよ。タコ。
0144nobodyさん
2010/07/07(水) 23:45:24ID:???ま、言語でどうこう言ってるようなのは程度が知れてる。
0145nobodyさん
2010/07/07(水) 23:50:32ID:???言語覚え立ての素人っぽくて恥ずかしい。
0146nobodyさん
2010/07/08(木) 13:31:46ID:???この人のプログラム酷い
0148nobodyさん
2010/07/09(金) 01:09:23ID:???http://hoge_domain/test/ でアクセス出来る様にしたいのですが、
mode_rewrite でどういう設定をすれば良いのでしょうか?
0149nobodyさん
2010/07/09(金) 01:12:33ID:???<?php
print "protected";
?>
0150nobodyさん
2010/07/09(金) 01:40:03ID:???protectedの使い方が分からないのは雑魚の証
0151nobodyさん
2010/07/09(金) 02:05:35ID:???■ このスレッドは過去ログ倉庫に格納されています