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

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2006/10/25(水) 08:45:46ID:???
PHPに関するくだらねぇ質問用スレです。ここならお前の下らない質問に回答があるかも知れません。

まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り

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

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

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

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

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークはそれぞれの該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
0347nobodyさん2006/10/28(土) 23:46:56ID:???
array_unique() 配列から重複した値を削除する
array_rand() 配列から一つ以上の要素をランダムに取得する

マニュアルのV. 配列関数(array)嫁
03483342006/10/28(土) 23:48:12ID:doQnvF3Z
>>344
えっと、
1.トップのハイパーリンクからリンクしてメインに表示させて
2.メイン内で外部HTMLから更にハイパーリンク
3.ハイパーリンク行えば表示された2回目の外部HTMLの情報を
とりこみたいのですけど^^;

メインページは
<html>
<title>メインページ</title>
<frameset rows="64,*,64">
<frame name="top" scrolling="no" noresize target="contents" src="とっぷ.php">
<frameset cols="150,*">
<frame name="contents" target="main" src="メイン.php">
</frameset>
<frame name="bottom" scrolling="no" noresize target="contents" src="ind4.php">
<noframes>
<body>
<p>このページにはフレームが使用されていますが、お使いのブラウザではサポートされていません。</p>
</body>
</noframes>
</frameset>
</html>
みたいな感じです。
うーむ、また分かりにくいかもしれないですけど><
よろしこです^^;
0349nobodyさん2006/10/28(土) 23:51:11ID:???
>>346
$name_a = array('りんご', 'ばなな', 'すいか', 'すいか', 'りんご');
$test_a = array('あか', 'きいろ', 'みどり', 'きいろ', 'あお');

foreach (array_count_values($name_a) as $name => $count) {
 $color = $count == 1 ? $test_a[array_search($name, $name_a)] : $test_a[array_rand($test_a)];
 echo $name . 'は' . $color . '<br>';
}
0350nobodyさん2006/10/28(土) 23:52:45ID:WdiFJULn
>>347
それは理解しているのですが
組み合わせる事が出来なく困っています。
どうかヒントだけでもお願いいたします
0351nobodyさん2006/10/29(日) 00:03:57ID:???
>>348
全然意味がわからん。そもそも最初の、フレーム、トップ、メインてわけわからん。
せめてフレーム(トップ)、メニュー、コンテンツ(メイン)とかにしてくれ。
0352nobodyさん2006/10/29(日) 00:04:59ID:EYdNlx59
>>349
ありがとうございます。
出来ました。

$color = $count == 1 ? $test_a[array_search($name, $name_a)] : test_a[array_rand($test_a)];

途中の ?
と :

の意味がわからないのですが解説お願い出来ませんでしょうか?
検索のしようがなく困っています。申し訳ありません。
0353nobodyさん2006/10/29(日) 00:17:02ID:???
>>348
>せめてフレーム(トップ)、メニュー、コンテンツ(メイン)とかにしてくれ。
そこも意味がわからないが、
>2.メイン内で外部HTMLから更にハイパーリンク
"から"→"へ"でなくて?

"コンテンツ(メイン)"では、いろいろ他のサイトのコンテンツを表示させて、
裏でそのコンテンツを取得したいということか?

0354nobodyさん2006/10/29(日) 00:19:56ID:???
>>352
三項演算子でぐぐれ
頼むから言語リファレンスくらいは全部一度読んでくれ
03553342006/10/29(日) 00:28:36ID:nyCjtOK7
>>351
すんませんm(_'_ )m波平ペコッ修行不足なかぎりです・・・
>>353
そうです!!
裏でコンテンツを取得したいのです!!
何か良い方法ありますでしょうか・・・
0356nobodyさん2006/10/29(日) 00:36:56ID:EYdNlx59
>>352
ありがとうございます。
勉強不足でした。

>>349
今テストしているのですが
$nameと$colorが対にならないようです。

例えばりんごはきいろなどが出てきてしまいます。
0357nobodyさん2006/10/29(日) 00:55:50ID:EYdNlx59
$name_a = array('りんご', 'ばなな', 'すいか', 'すいか', 'りんご');
$test_a = array('あか', 'きいろ', 'みどり', 'きいろ', 'あお');

説明下手ですいません。
この場合
りんごは重複しているので あか or あお のどちらかをランダムで選択
ばななは一つしかないので きいろ
すいかは重複しているので みどり or きいろ のどちらかをランダムで選択

このようにしたいのですがどなたかアドバイスお願いします。 
0358nobodyさん2006/10/29(日) 01:04:26ID:bVOhrU5J
マルチスレッドで利用している場合、
flock()の保障は不完全となりますか?
0359nobodyさん2006/10/29(日) 01:19:01ID:???
>>357
$name_a = array('りんご', 'ばなな', 'すいか', 'すいか', 'りんご');
$test_a = array('あか', 'きいろ', 'みどり', 'きいろ', 'あお');

foreach (array_count_values($name_a) as $name => $count) {
 if ($count == 1) {
  $color = $test_a[array_search($name, $name_a)];
 } else {
  $colors = array_keys($name_a, $name);
  $color = $test_a[$colors[array_rand($colors)]];
 }
 echo $name . 'は' . $color . '<br>';
}

で一応いけると思うけど
果物を連想配列に直すべきだな

>>358
http://jp.php.net/manual/ja/function.flock.php
不完全みたいね
0360nobodyさん2006/10/29(日) 01:22:36ID:???
$name_a = array('りんご', 'ばなな', 'すいか', 'すいか', 'りんご');
$test_a = array('あか', 'きいろ', 'みどり', 'きいろ', 'あお');

foreach (array_count_values($name_a) as $name => $count) {
$out = array();
foreach (array_keys($name_a, $name) as $name2) {
$out[] = $test_a[$name2];
}
$color = ($count == 1) ? $out[0] : $out[rand(0, $count-1)];
echo $name . 'は' . $color . '<br>';
}
0361nobodyさん2006/10/29(日) 01:36:21ID:EYdNlx59
>>359
>>360
ありがとうございます。

>>359さんのが自分にしっくり来たので使わせていただきます。
有難う御座います。
0362nobodyさん2006/10/29(日) 01:45:11ID:???
>>358
flockとマルチスレッドは何の関係もないと思うよ。
0363nobodyさん2006/10/29(日) 01:46:54ID:???
ユーザ定義のエラーハンドラ関数の中では、require_once()もできないし、
__autoload()も効かないようなんですけど、どうでしょう?
03643152006/10/29(日) 02:10:49ID:???
>>332 まともな回答ありがとう。
セッションで実装はずいぶん前にやってましたが、
URL直リンができないので不便すぎて廃止しました。

今は一応hiddenでやってますが、以前書いたようにフォルダ階層が分かりにくい。

実際アルバイト情報サイトなどではhiddenで持ちまわっているところが多いけれど
(検索結果をブックマークに保存できるため)
yahooがどういう仕組みになっているのかが聞きたかったんですよね。

ソースに直接書く以外たぶんできないとは思いますが、
DBデータの変更の際に修正が大変なんですよね。

あと >>325 がなんかいってたが、あんたよりできるのは確実だからw
ちなみに俺のメインはC++のWin32ゲームアプリで、WEBアプリケーションに関しては
初心者なみだけど。

気になったことが1つ。
DirectX板はかなりレベルが高いやつが多かったが、WEBアプリは基本的に低いのかな?
0365nobodyさん2006/10/29(日) 02:15:44ID:???
連想配列をランダムに全て取り出すのはどうすればよいですか?
03663152006/10/29(日) 02:16:42ID:???

>>322
あとPOSTもセッションと同様の理由で使いにくいですね。
ものによるとは思うけど。
03673152006/10/29(日) 02:17:22ID:???
>>322 じゃなくて >>332 でした。 Σ(・ε・;)
0368nobodyさん2006/10/29(日) 02:24:52ID:???
連想キーと要素との関係を維持しつつ配列をランダムにする
もしくは
連想配列をランダムに一つではなく全て取り出すには

どうすればよいでしょうか?

03693152006/10/29(日) 02:26:50ID:???
>> 368

PHPマニュアルに

shuffle
(PHP 3 >= 3.0.8, PHP 4, PHP 5)

shuffle -- 配列をシャッフルする
説明
bool shuffle ( array &array )


この関数は、(要素の順番をランダムにするために)配列をシャッフルし ます。

注意: この関数は、 array パラメータの要素に対して新しいキーを割り当てます。その際、単純にキーを並べ替える代わりに、すでに割り当てられている既存のキーを削除してしまいます。


ってあったよ。
0370nobodyさん2006/10/29(日) 02:31:37ID:???
>>369

キーを削除するって書いてあったorz
マニュアル探したらありそうな気がするんだけどなぁ

PHPってクラス化されていないから探すのがかなり面倒ではあるね。
03713152006/10/29(日) 02:56:01ID:???
>>368

誰も答えてなかったので作ってみたよ。
一応マニュアル調べてみたが、無いみたい。

function array_sorta(&$data) {

$cnt = count($data);
for ( $i = 0; $i < $cnt; $i++ ) {
$key = array_rand($data);
$data2[$key] = $data[$key];
unset($data[$key]);
}

$data = $data2;
}

以下テストプログラム

$data = array( "a" => "A", "b" => "B", "c" => "C");

print_r($data);
echo "<BR>";

array_sorta($data);

print_r($data);

バグあるかも。
03723152006/10/29(日) 02:57:43ID:???
名前 array_sorta となってたが、やってることshuffleだったw array_shuffle とでもして。
0373nobodyさん2006/10/29(日) 02:59:20ID:???
>>364=>>315
なにコイツ?
そこまで偉そうな態度で講釈垂れるくらいなら
こんなスレ来ないで自分で考えりゃいいのに。

必死にC++がどうこうとか言ってるあたりが痛い。
03743152006/10/29(日) 03:02:31ID:???
>>373

正直何も答えられないお前のほうが痛いぞ
低脳はだまってろよw

ここはもう少しレベルが高いと思って質問してみただけだ
質問したあと後悔したよ
0375nobodyさん2006/10/29(日) 03:25:27ID:???
>>368

$text = array(1,2,3,4,5);
$i = $text;

$i[] = shuffle($i);
$del = array_pop($i);
unset($del);

foreach ($i as $v)
{
echo $v."<br>";
}
0376nobodyさん2006/10/29(日) 03:29:36ID:???
>>375

連想キークリアされてるぞそれ
03773752006/10/29(日) 03:33:24ID:???
$text = array(1,2,3,4,5);
$i = array_diff($text,array());

$i[] = shuffle($i);
$del = array_pop($i);
unset($del);

foreach ($i as $v)
{
echo $v."<br>";
}


>>375はphp4用。こちらはphp4と5両方対応。
0378nobodyさん2006/10/29(日) 03:36:24ID:???
>>377

連想キー分かってないやつ乙
0379nobodyさん2006/10/29(日) 03:38:40ID:???
$text = array("name"=>"山田","age"=>20,"tall"=>180);
すまん、訂正
$i = array_diff($text,array());

$i[][] = shuffle($i);
$del = array_pop($i);
unset($del);

foreach ($i as $v)
{
echo $v."<br>";
}
03803752006/10/29(日) 03:39:54ID:???
2行目コメントアウトするの忘れずに。
03813752006/10/29(日) 03:42:40ID:???
再度確認したらキーが消えてた。
il||li_| ̄|○ il||li
03823752006/10/29(日) 03:51:15ID:???
参考文献みつけました
ttp://side-b.sto.co.jp/weblog/archives/14
0383nobodyさん2006/10/29(日) 04:09:17ID:???
>>368
uasortの比較関数でランダムに返してやりゃいいんじゃね?

uasort($arr, 'cmp_rand');
function cmp_rand() {
 return rand(0, 2) - 1;
}
0384nobodyさん2006/10/29(日) 04:09:39ID:???
$r = mt_rand(0, count($array)-1);
$i = 0;
foreach ($array as $v)
{
if($i == $r) {echo $v."<br>"; break; }
$i++;
}
0385nobodyさん2006/10/29(日) 04:21:17ID:???
>>363
phpのバージョンとphp.iniを確認汁
0386nobodyさん2006/10/29(日) 04:47:03ID:???
しました。
0387nobodyさん2006/10/29(日) 04:59:09ID:hbSphBwD
PHPのセッションってデフォルトでブラウザ閉じるまで有効になってるはずだよな?
何か時々セッションが切れてしまうんだが・・・
ちなみにバージョンはPHP 5.1.1(Linux)
0388nobodyさん2006/10/29(日) 05:00:45ID:bPIXuHP3
php5.0.1
Apache2.2.3 を使ってphpを始めた者です。windowsXPです。

sqliteを使いたいのですが、ファイルのオープンの時にエラーが出てしまいます。
Fatal error: Call to undefined function sqlite_open()
in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\nenpyou\schedule.php on line 2

2行目のコードは、
$db=sqlite_open("schedule.sqlite",0666,$err);   
です。

php.iniは、
; Directory in which the loadable extensions (modules) reside.
extension_dir = "c:/php/ext"

;extension=php_sockets.dll
extension=php_pdo.dll
extension=php_sqlite.dll
;extension=php_sybase_ct.dll

のように変えています。
初心者なので右も左も分からない状態ですが、よろしくお願いいたします。
0389nobodyさん2006/10/29(日) 05:19:21ID:hbSphBwD
>>388
undefinedが出てるって事は間違いなくphp.iniの設定が間違ってるな
PHPがお前にsqlite_open()って言う関数がが見つからないよ!って教
えてくれてるんだ

まずapacheはちゃんと再起動したか?
03903872006/10/29(日) 06:08:50ID:hbSphBwD
あ〜・・・色々凄い勘違いしてたみたい・・・

ちょっとまとめて出直してくる
0391nobodyさん2006/10/29(日) 08:03:36ID:???
> セッションで実装はずいぶん前にやってましたが、
> URL直リンができないので不便すぎて廃止しました。
>
> 今は一応hiddenでやってますが、以前書いたようにフォルダ階層が分かりにくい。

こいつのおおもとの質問を読む限り、
こいつが探しているものは $_SERVER['PATH_INFO'] なのかな、って気がするが。

ただ持って回るのが検索履歴なら直林しなきゃいけない理由もよくわからんし
セッションに入れとけばって感じだけど。
携帯かなんかなのかな? あ、セッションIDをURLに入れとくように設定しとけば直林できるんでは
0392nobodyさん2006/10/29(日) 09:43:30ID:???
315は「履歴」という日本語の意味を知らないんじゃないか?
履歴とかではなく、単にカテゴリ分けされた「現在地」にあたるものを、ファイルシステムのパスみたいにスラッシュ区切りで表示したいだけだと思われ。
セッションを使う必要すらない。
URLの見た目も階層的にするなら、mod_rewriteで終了。
0393nobodyさん2006/10/29(日) 10:07:10ID:???
一意な数を取得したい場合、どうやってますか?
カウントファイル用意するか、
SQLでカウンタ用テーブル作成するか、
の方法取ってるんですが、もっとスマートな方法はないでしょうか?
0394nobodyさん2006/10/29(日) 10:12:11ID:???
>>393
一意ってのが後にも先にも一意っていうなら
そりゃやっぱどこかに既存値を保存しないとムリあるから
ファイルかDBになるんでないの?

自分でやるならまずその数字の使用目的と生成頻度から
本当に一意である必要があるかを問うとこからはじめる。
0395nobodyさん2006/10/29(日) 10:26:57ID:???
>>393
大概のDBには連番発行のための仕組みがあるからそれを使う
0396nobodyさん2006/10/29(日) 12:14:56ID:XBhnfX09
一意ってのがどんなもんなのかよくわからん
394と同じく使用頻度に重点を置くのが一番かと
0397nobodyさん2006/10/29(日) 13:45:32ID:c2r4qYBN
すいません、下らなくない質問ですが、本スレがないらしんでここで。

PHP側でHTTPリクエストのリクエスト内容を取得する方法ってありますか?
(HTTP 1.0/1.1 のリクエストヘッダーを取得する方法です。)
0398nobodyさん2006/10/29(日) 14:06:22ID:???
>>397
下らねえよ
$_SERVER['HTTP_*']
apache_request_headers
nsapi_request_headers
03993882006/10/29(日) 14:36:38ID:Vho0F98z
>>389
レスありがとうございます。
ApacheはRestartしました。

php.iniで、ほかにsqlite_openに関係するところがあるのでしょうか?
0400nobodyさん2006/10/29(日) 15:10:39ID:???
それでちゃんとextension_dirにdllがあれば動くはず
0401nobodyさん2006/10/29(日) 15:55:46ID:???
apache2.2.3って
phpディレクトリにちゃんとphp5apache2_2.dllが入っていることが前提で質問してるんだろうな?
04023882006/10/29(日) 17:20:07ID:t7v+PkcA
>>400,401
Cのphpのextに両方のファイルがあります。
php5apache2_2.dllも、phpに入っているのを確認しました。

さっきももう一度パソコン再起動して試してみましたが、同じ症状です。
0403nobodyさん2006/10/29(日) 17:26:15ID:???
PHPIniDirは?
0404nobodyさん2006/10/29(日) 17:26:56ID:???
って2.2ってPHP対応してなくなかったっか?忘れたけど
0405nobodyさん2006/10/29(日) 17:27:27ID:???
ぶっちゃけ、ここにいる回答者ってまともなもの作ったことないべ?
0406nobodyさん2006/10/29(日) 17:54:15ID:???
ぼうや、良く気付いたね!
その年でそこまで分かるなんて本当に大したもんだよ、うん。
0407nobodyさん2006/10/29(日) 18:13:22ID:???
ここのスレはいい人ばかりで大好きです。
ありがとう。
0408nobodyさん2006/10/29(日) 18:31:59ID:???
>>404
非公式で配布されてるよ。
0409nobodyさん2006/10/29(日) 18:33:21ID:???
>>402
まさかとは思うが公式版のapacheつかってないだろうな?
04103882006/10/29(日) 19:02:32ID:t7v+PkcA
>>403
phpIniDirとは、httpd.confのどこかに書くのでしょうか?

>>408,>>409
たぶん公式版を使っています・・・
ttp://httpd.apache.org/download.cgiからダウンロードしました。

簡単なsqlite以外は動作していたのですが。
非公式で配布されているのは、どこででしょうか?
0411nobodyさん2006/10/29(日) 19:18:20ID:???
公式版使ってるなら2.0か1.3にしな。
非公式ぐらい自分で探せないなら公式版つかってたほうが無難。
04123882006/10/29(日) 19:20:00ID:t7v+PkcA
すみません、410の、「簡単なsqlite以外」は、
「phpそれ自体(簡単なphpコード)」という意味です。わかりにくくてすみません。
0413nobodyさん2006/10/29(日) 19:57:41ID:???
無理に2.2.3を使う必要はない。やめとき
0414nobodyさん2006/10/29(日) 20:20:33ID:???
すいません。教えてください。
windows環境でPHP5.1.6を動かしてます。
mysqliを試してみようと思ったのですが、上手く動きません。
とりあえずphp.iniの
;extension=php_mysqli.dll
のセミコロンを外して再起動したんですが全く無反応です。
Apacheのエラーログに以下のようなメッセージが書かれてました。
PHP Warning: PHP Startup: Unable to load dynamic library 'c:\\php\\ext\\php_mysqli.dll'

このサイト見てみたら
ttp://php.s3.to/man/install.windows.extensions.html
libmysqli.dllが必要(バンドル)と書いてありますが、そのようなファイルは見当たりませんでした。
どうしたらいいでしょうか?お願いします
0415nobodyさん2006/10/29(日) 20:28:41ID:???
mysqlインストールしてるか?
0416nobodyさん2006/10/29(日) 20:34:12ID:???
>>414
・extension_dirを設定しているか
・extension_dirで設定したディレクトリにdllがあるか
04173882006/10/29(日) 21:47:30ID:uuNUd04h
apache2.0.59を入れてみたのですが・・・
同じメッセージが出てしまいます。

httpd.confは、
LoadModule phhp5_module c:/php/php5apache2.dll
AddDefaultCharset none
AddType application/x-httpd-php .php
の設定にしています。
0418nobodyさん2006/10/29(日) 21:53:00ID:???
phhp
0419のぐち2006/10/29(日) 22:02:14ID:???
なおってなかったら
とりあえずもう一度apacheとphpをいれなおせ。
いれなおしたらレスしれ
04204142006/10/29(日) 22:08:57ID:C/SNmSN3
>>415
今まで通常のmysql_connectで繋いでたんでMySQL側の原因ではないと思います。
>>416
extension_dir = "c:\php\ext\"
としてあって同ディレクトリにphp_mysqli.dllが置いてあります。
libmysqli.dllはみんな存在してないんですか?
libmysql.dllはあるんですが・・・。
0421nobodyさん2006/10/29(日) 22:33:18ID:0I0yeegj
ダウンロードカウンタの仕組みについて質問です。
リンクをクリックしてファイルをダウンロードさせたいのですが、
ファイルのリンクを踏んだらカウントするって考えでよろしいのでしょうか?
クライアントが保存をキャンセルした場合もカウントされるものですよね?
0422nobodyさん2006/10/29(日) 22:43:20ID:???
>>388
403で出てるけど、php.iniの場所は確認した?
PHPのインストールディレクトリに入ってるだけじゃだめだよ(PATHが通っているかどうかは無関係)。

・C:\WINDOWSに入れる
・httpd.confでPhpIniDirを設定する

のどちらかをやればおk。
0423nobodyさん2006/10/29(日) 22:44:24ID:???
>>420
apache再起動はしたか?エラーメッセージはどうなった?
Unable to load dynamic library ならまだ読み込めない原因があるはず

http://php.net/manual/en/install.windows.extensions.php
libmysqli.dll はphp 5.0.3以降 libmysql.dll に
統合されたみたいなので問題ない

ていうかmysqliなんて使わずpdo_mysqlにした方がいいと思うよ
04244142006/10/29(日) 23:10:30ID:C/SNmSN3
>>423
はい。何度も再起動しました。
Apacheのエラーログに
PHP Warning: PHP Startup: Unable to load dynamic library
'c:\\php\\ext\\php_mysqli.dll' - \x8ew\x92\xe8\x82\xb3\・・・
(中略)
in Unknown on line 0
と出てます。あきらめようかなorz

pdo_mysqlですか。
ちょっと勉強してみます。
0425nobodyさん2006/10/29(日) 23:20:57ID:???
PHPを最近使い始めた初心者です。(C/C++経験はあり)
PHPの関数・クラス定義・変数のスコープについて悩んでいます。
関数やクラスをファイルに分けて定義し、include/requireした場合に名前衝突を起こす問題を極力避けたいと思っています。
現状では関数/変数をクラス内static定義にする事によって極力名前衝突を起こさないようにしています。
(C++でのnamespase的に使用しています。PHP5で実装予定であったものがされなかったとかなんとか・・・)

こうしてある程度クラスに名前を閉じ込めたものの、クラス定義名の衝突だけは回避出来ずに困っています。
今作成している物に後からモジュール的にコードを追加して行く予定の為どうしても名前衝突問題を回避しなければ・・・

構成的に以下のような物を予定しているます。
[メインphp]
 |---[モジュールAphp]
 |---[モジュールBphp]
 |---[モジュールCphp]
 |---[追加予定モジュールXphp]
 |---[追加予定モジュールXphp]
・・・・
メインphpが上から順番にモジュールPHPを読み込んで行くような構成です。

このような構成で、[モジュールXphp]各々がクラス定義phpファイルをinclude/requireすると
自身のモジュールでだけ使用する比較的どうでも良い様な物までグローバルスコープに名前が追加されていってしまうようで、
後に読み込まれるモジュール程名前の幅が狭まっていってしまいます・・・
関数内でクラス定義をinclude/requireしたりと色々試したのですが、どうしても定義はグローバルになってしまうようです。

現状ではモジュールそれぞれがクラス名にプレフィクスを付ける規約みたいな物を作る方法しか思いついていません。
class ModuleA_class1{ }
class ModuleA_class2{ }
class ModuleB_class1{ }
class ModuleB_class2{ }

なにか良い方法はありませんでしょうか(´・ω・`)
0426nobodyさん2006/10/29(日) 23:26:00ID:???
>>424
なんか回答とその対応が混乱してるように見えるんだけど、
>>423にあるようにlibmysqli.dllが必要なのは5.0.2まで。
だからそもそも>>414の
>とりあえずphp.iniの
>;extension=php_mysqli.dll
>のセミコロンを外して再起動したんですが全く無反応です。
これ自体が間違ってると思うんだがどうよ?
extensionに必要なのはlibmysql.dllだけじゃないの?
0427nobodyさん2006/10/29(日) 23:35:11ID:???
>>425
はっきり言おう、ない
クラス名に一意のprefixをつけるくらいしかない
メジャーなPHPフレームワークも大概そうしている
例えばZend Frameworkなら全クラスに
prefixで「Zend_」がついてその後にモジュール名がくる
04284252006/10/30(月) 01:15:22ID:???
>>427
情報ありがとうございます。
クラス(関数/変数)にprefixを付ける制限的規約を設けることにします。

おかげさまで気持ちがスッキリ割り切る事が出来ました。
これで思う存分コードを書きまくる事が出来ます(`・ω・´)

0429はじめまして2006/10/30(月) 02:33:13ID:zWlXBO6n
すみません。
ある文字列をmb_convert_encodingを使いEUC-JPに変換したいのですが、
何を指定しても常にASCIIになります。
なにか他に設定あるでしょうか?よろしくお願いいたします。

ソース:SJIS
入力値(test):"あああ"
mb_detect_encoding($_POST['test'])で取れる値:SJIS

 $strEuc = mb_convert_encoding($_POST['test'], "EUC-JP", "SJIS");を実行
 ※ちなみに変換前のコードのとこをautoやほかのにしてもだめでした・・・

mb_detect_encoding($strEuc)で取れる値:ASCII
04300x3f(笑)2006/10/30(月) 02:41:05ID:???
php.iniにmbstringの項目あるじゃん、書け
0431nobodyさん2006/10/30(月) 02:45:29ID:???
>>429
実際は変換結果はどうなってんのよ。出力して確認したのか?
「変換できてない」のと「detectでEUCが判別できない」のとでは
全然意味が違うし、どっちの可能性が高いかったらdetectの方が怪しい。
0432nobodyさん2006/10/30(月) 03:06:28ID:???
>>429
mb_detect_encodingは短い文字列に対しては、期待通りの結果にならないこともあるので(内部のバイナリレベルでは人間にもコンピュータにも区別つかなかいこともあるし)、基本的に信頼をしたらだめ。
飽くまで補助的な目的に使う。
mb_convert_encodingは第2引数と第3引数が正しければ、信頼はできる(内部にバグがない限りは)。
0433nobodyさん2006/10/30(月) 04:14:32ID:???
>>429
自分でコンバート処理かけば解決。
世の中にはメールアドレスの正規表現を書いたものすごい人もいるんだから
やってみればいいじゃん
0434nobodyさん2006/10/30(月) 05:11:29ID:???
PerlならともかくPHPでそんな処理書いたら遅すぎて大変な気もするけどな。
0435nobodyさん2006/10/30(月) 05:39:04ID:???
んなこたあねえよ
0436nobodyさん2006/10/30(月) 05:47:50ID:???
文字コードの変換って、基本的にテーブルを参照しながら端から端まで1方向にスキャンするだけだから、PHPで書いてもそれほど遅くはならないと思うよ。
まあ実装しても車輪の再開発にしかならないけど。
04373882006/10/30(月) 05:49:57ID:QeG77sZU
>>419,422
Apache2.0.53とphp5.0.4を入れ直したら、
解決しました。
このバージョンでは、php.iniでsqliteの設定をしなくても
大丈夫でした。
ご協力下さった皆様、本当にありがとうございました。
0438nobodyさん2006/10/30(月) 06:17:39ID:???
変数を使ってincludeするファイル名を指定する場合、どうすればいいですか?

例えば、
$mode = "text"
の時に"file_text.inc"をincludeしたいのですが、どうすればいいのでしょうか?
0439nobodyさん2006/10/30(月) 06:17:53ID:???
いえいえ、朝飯前ですよ。こまったことがればまた質問してください。
04404382006/10/30(月) 06:18:32ID:CYbz73Go
すみません、IDは表示しなければいけなかったのですね
0441nobodyさん2006/10/30(月) 06:22:26ID:???
>>438
何がわからないんだ・・・?
if ($mode == "text") {
 include "file_text.inc";
}
04424382006/10/30(月) 06:27:12ID:CYbz73Go
>>441
回答ありがとうございます。
説明不足でスミマセン、例ではtextだけを上げましたがtexta,textb,textc・・・という風に生成されていく場合です。
04434382006/10/30(月) 06:28:56ID:???
解決しますた。ご協力ありがとうございますた。
0444441のソースを元に2006/10/30(月) 06:34:46ID:???
#switchつかったほうがいいけどif文でやるなら。


if ($mode == $texta) {
 include "file_text.inc";
} elseif {
 #処理2
} elseif {
省略

ていうか最低限の勉強しないで聞くのは学校ぐらいにしておけクズ。
0445nobodyさん2006/10/30(月) 06:39:21ID:???
>>texta,textb,textc・・・という風に生成されていく場合です。

↑>>444のコードは自分でいじって動かしてみろ。
連想配列の勉強すればわかることだから入門書嫁ボンクラ。
04464382006/10/30(月) 06:40:13ID:CYbz73Go
いえ、そういう意味ではなく変数をファイル名に含んだファイルを呼び出したいんです。
444のコ−ドだとtextxが増えた場合にelseifを自分で増やさなければならないのですが
0447nobodyさん2006/10/30(月) 06:48:16ID:???
最初から最後まで意味のわからない質問だったなwww
■ このスレッドは過去ログ倉庫に格納されています