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

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

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001nobodyさん2008/05/27(火) 18:04:33ID:???
まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り

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

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

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

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

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0878nobodyさん2008/06/23(月) 07:28:46ID:???
>>875
疲れると言い訳しつつも口を出さずにいられない小心者乙www
0879nobodyさん2008/06/23(月) 07:31:51ID:???
結局、PHPスレにも関わらず、ソースごと回答してるんだから、
煽ってる奴に比較すれば遙かにまとも。無知を棚にあげて恥ずかしくないの?
0880nobodyさん2008/06/23(月) 07:39:56ID:???
>>875
屁理屈だけが得意って感じだね
JavaScript使えばPOSTできるのは当たり前でしょw
それが>>852に対して提示する解決方法なの?

信じられないんだけどww

あと、課金者はsageてる人のIDも見えるから
そこんとこ宜しくねww
0881fushianasan2008/06/23(月) 07:50:54ID:???
>>880
可哀想だからそんなにムリしなくてもいいんだよ。
ほら、リモホくらい見せてやるから。
さすがに痛々しいわ……w
0882pl655.nas957.p-tokyo.nttpc.ne.jp2008/06/23(月) 07:51:29ID:???
あー、hいらねーのか。
08838802008/06/23(月) 07:57:23ID:???
>>881
勘違いしているようだけど、
俺は今までお前を煽ってた奴じゃないよ?

あと、ホスト名なんか晒して何がしたいの?
08848802008/06/23(月) 07:58:51ID:???
で、>>880に対するご意見は?w
痛々しいとか言うだけじゃなくてマトモに言い返してみせてよ。
>>852への解決方法がAjaxでPOSTしろなんて
ギャグとしか思えないんだけどww

他には浮かばなかったの?
0885nobodyさん2008/06/23(月) 08:06:21ID:???
>>875
これ使ってinnerHTMLみたいにしてJavaScript呼べるよってことなのかな?
0886nobodyさん2008/06/23(月) 08:21:27ID:???
>>880
これ最後ね。
ちょうど、Djangoでハマッて現実逃避してるとこだしなw

>あと、課金者はsageてる人のIDも見えるから
こういうのが無様なんだよ。やめようぜ。
何の課金だよw ●か? 株か? モリタポか? 言ってみてくれよ。

自分の知識を前提として、世の中を捉えてると、
視野が狭いどころじゃない、いずれ苦痛を味わうハメになる。
それをゆっくり理解していってくれ。

>JavaScript使えばPOSTできるのは当たり前でしょw
それができないと強く主張する奴に対して、「できるよ」と伝えた。
そして、どうしてもできないと言い張る奴に対して具体例を見せた。
それだけの話だよ。理路整然としていると思うけど。

>それが>>852に対して提示する解決方法なの?
仮に、外部JavaScriptが自分で書き出せる範囲なら、
PHPで書き出す処理に作り替えればいいだけだし、
上記の環境が不可能かどうかすら書いていないから、
それに対して、より具体的な回答はムリだよね? 分かるよね?

ただ「JSでGETで受け渡すのイヤだ」という要望に対して、
「じゃ、POSTでやれば?」は、まっとうな回答でしょ?

より、具体的な環境と要望を示してくれれば、
それに対して、より適切な回答を用意するのも構わないけどね。

>>852への解決方法がAjaxでPOSTしろなんて
んなこと言ってないよw
受け渡しが目的なのに、Ajax側でPOSTしてどうすんだよw
0887nobodyさん2008/06/23(月) 09:05:39ID:???
SESSION使うのが一番楽な気がするが・・・
0888nobodyさん2008/06/23(月) 09:14:50ID:???
三行でまとめてくれ
0889nobodyさん2008/06/23(月) 09:15:23ID:???
出た!
セッション万能主義者。

完全な思考停止状態。

もう少し、質問者の仕様を理解してから言えよ
08908872008/06/23(月) 09:37:48ID:???
>>875
ajax使ってもpostString書き換えたら一緒だろ

>>889
セッション嫌いな方なんですね

つーか>>852の情報だけでやるなら
>>862>>865の方法がシンプルなわけだが
そもそもjavascriptファイルを動的に吐かなきゃできないってのは
ちゃんとロジックを分離できてないだけだろ
0891nobodyさん2008/06/23(月) 10:00:09ID:???
>>890
俺がセッションが嫌い理由を少しだけ教えてやるか。
セッションのデータは、セッションファイルに書き込まれる。
つまりファイル処理が発生するわけだが、
ページのリクエストが短い時間で接続されると、
前のリクエストのセッションが書き終わっていない前に、
古いセッションデータが読み込まれて大変なことになる。

そうなる頻度は、環境にもよるが10万回のうち3件前後。
弱小サイト運営しているやつには分からんだろうが、
一日数十万件のアクセスがあるサイトは、無視できなくなる。
0892nobodyさん2008/06/23(月) 10:01:40ID:???
>>886
ずいぶん顔真っ赤ですねww
だれも読まない文章乙
0893nobodyさん2008/06/23(月) 10:13:15ID:???
>>891
ファイルベースでやるとそうなるね
0894nobodyさん2008/06/23(月) 10:27:06ID:???
memcachedとDBでセッション管理している俺には関係ねぇ
0895nobodyさん2008/06/23(月) 10:36:29ID:???
HTMLにコメントでJS用変数を直書きしておいて
(<!-- 1,2,3,4,5 -->とか)
それを呼び出したJSで取り出して使うってのはどう?
0896nobodyさん2008/06/23(月) 16:13:57ID:???
興味あるやつ見てってくれや
http://sugo69.adjt.jp/?a=intro&s=533045
0897nobodyさん2008/06/23(月) 16:18:14ID:???
>>894
>memcachedとDBでセッション管理している俺には関係ねぇ

どういう管理をしているのか分からないけど、
セッション管理に、memcachedを使うのはよくない。

アクセスが急増したりセッションに入れるデータが増えていくと、
急速にメモリーを食うようになる。それにメモリーの使用の予測がつかない。

やるならDBだと思うよ。
0898nobodyさん2008/06/23(月) 16:27:48ID:0IlltlK0
session_start()を使いログインしてるかどうか判断するとき、
ログインしていない人までファイルが作られてしまうので、
先にクッキーにセッションIDがあるかどうか調べてからsession_start()するようにしているのですが、
これって意味のある行為でしょうか?

ファイルが作られる分の無駄な処理を減らしたいと思ってしているのですが。
08998522008/06/23(月) 16:45:14ID:???
>>852です。
自分の質問でスレが荒れてしまったようで申し訳ないです。

URLからの受け渡しを避けたい理由はセキュリティ的な面と、
XHTML1.0TransitionalでURLから変数を渡そうとするとValidaterにぶーぶー文句言われるからです。
一応サニタイズはしていますが、ソースの美観の問題で工夫次第で避けられるなら避けたいなと。
JavaScript.phpに変数を渡して、それに応じてPHPで吐きだしたJavaScriptコードでDOMをいじらせたいんです。

>>862>>865
保守性の面で、JavaScriptはHTMLソースから完全に分離して管理したいこともあって、
js呼び出しに直書きJavaScriptを使うのはちょっと微妙です。

>>861
JavaScript経由無しでHTMLヘッダからPOSTって投げられるんでしょうか?

>>877
JavaScript.phpの内容はPHPで書き出しているんですが

>>887
セッションについては少し調べてみます。

>>895
HTMLコメントって外部JSから拾えるんでしょうか
0900nobodyさん2008/06/23(月) 17:28:23ID:???
PHPを独学で学んでいます。PHPの絵本を読み、次に少し難易度の高い本を読み、PEARの本を読みました。
掲示板やアンケート、ショップの記入欄とかは、なんとか作れそうです。
このレベル、もしくは少し上のレベルのプログラムのサンプルが
解説つきでたくさん載っている、実践的な教本があれば教えていただきたいのです。

よろしくお願いします。
0901nobodyさん2008/06/23(月) 17:32:15ID:???
追記です。近くの書店では、あまりに初歩的なサンプル集しかありません。アマゾン等では内容を把握できませんので、是非ともアドバイスを頂きたい次第です。
0902nobodyさん2008/06/23(月) 17:39:19ID:???
>>900
PHP関連の書籍 第6版
http://pc11.2ch.net/test/read.cgi/php/1213919075/
0903nobodyさん2008/06/23(月) 17:42:21ID:???
ありがとうございます。
すいませんでした。
0904nobodyさん2008/06/23(月) 19:03:04ID:???
Cent上でPHP4.4.7を動かしていたのですが
次のプロジェクトでSQLSERVERに接続する必要が出て
再コンパイルが必要ということに行き着いたのですが、今までやったことが無く
いまいち実態がつかめていません。
php.iniやその他各種設定は保持されたままなのかといった、事後の影響が
どう出てしまうのか想像できず、怖くて踏み切れない状態です。

このあたりのことを詳細に解説してくれるようなサイトや書籍等はございますでしょうか。
0905nobodyさん2008/06/23(月) 19:48:30ID:???
>>862は駄目で
>>895は見込みありなのか
キビシーな
0906nobodyさん2008/06/23(月) 19:55:18ID:???
>>899
>JavaScript経由無しでHTMLヘッダからPOSTって投げられるんでしょうか?
当たり前でしょ(;^ω^)

>JavaScript.phpの内容はPHPで書き出しているんですが
だから、Javascript.phpじゃなくて、外部jsそのものをPHP化できないの?って言ってる。
そしたらPHP間の通信だから、何でもできるだろ。
PHP→JSだとPOST受け渡しにAJAX使ったり多少技術力が必要になる局面もある。

つか、なんでも聞く前に調べろよ。



>>900
>>902は全く参考にならん。クソスレ。
はっきり言って要望の良書は少ない。
とりあえず、スーパーサンプルと活用編の2冊買えばいいんじゃね?
正直、PHPは簡単だから、わざわざ本買わなくても、
配布されてるやつをマニュアル片手に読み解けば、
半月でそれなりにはなれる。



>>904
なんで再コンパイルが必要なの?
php.iniの修正くらいで、普通、必要ないよ。
0907nobodyさん2008/06/23(月) 19:56:26ID:???
お前は害悪だから黙ってろ
0908nobodyさん2008/06/23(月) 20:09:20ID:???
>>902
そのスレをすすめるのは単なる嫌がらせとしか思えない
09098522008/06/23(月) 20:32:19ID:???
>>906
> だから、Javascript.phpじゃなくて、外部jsそのものをPHP化できないの?って言ってる。
> そしたらPHP間の通信だから、何でもできるだろ。

説明に誤解があったようですが、外部jsそのものをPHP化しています。
その「何でも」を伺いたいです。

宜しくお願い致します。
0910nobodyさん2008/06/23(月) 20:33:29ID:???
とりあえず852は1読めや
0911age2008/06/23(月) 20:37:48ID:DyP7tiX7
PHP4.4
PHPというよか正規表現の質問になってしまうかもですが
次のコードの出力が「aaa777aaaa」になります。
自分の予想だと「aaa777aaaa888」になると思ったのですが…。
888が入らないは正常でしょうか?


$string='11aaa1222333444555666777aaaa888';
$pattern = '/(a*)(.*?)(7*)/';
$replacement = '${1}${3}';
echo preg_replace($pattern, $replacement, $string);
0912nobodyさん2008/06/23(月) 20:39:37ID:???
Javascript.phpはtext/javascriptを書き出してるだけなの?
なら、本当に何でもできるじゃん。POSTだろうが、他のあらゆる手段だろうが。
それとも、呼び出し側は静的なHTMLファイルなの?
なら、呼び出し側もPHPにしちゃえば?
0913nobodyさん2008/06/23(月) 20:51:55ID:???
>>852
とりあえず、jsのおいてあるディレクトリに、mod_rewriteで、書き換えるようにするのは?

<script type="text/javascript" src="hoge_hoge.js"></script>


.htaccessの中身-------
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^(.+?)_(.+?)\.js js.php?val1=$1&val2=$2 [L]
</IfModule>


とか。そんな感じで。
0914nobodyさん2008/06/23(月) 20:57:59ID:???
>>911
888は(a*)(.*?)の$2に引っ掛かってるんだろたぶん
$2見てみればいいじゃん。
0915nobodyさん2008/06/23(月) 21:18:08ID:???
>>911
preg_replaceは、その正規表現にマッチする全てを置換するので、
何個も複合して、置換繰り返してると思われる。

preg_match_all($pattern, $string, $r);
echo "<pre>";
print_r($r);
echo "</pre>";

を見てみれば、なにやら不穏なことになっているのが分かると思う。
0916nobodyさん2008/06/24(火) 00:01:36ID:xMpVBPQk
質問します、配列の中で、任意のキーの位置を知りたいです
どうしたらいいでしょうか?

$testAry = array('dog'=>5, 'cat'=>10, 'rat'=>15);
となっているとして、'dog'の位置(0)を返す方法を考えてます
調べたんですが一発で引き出せる関数があるんでしょうか?
なかったらどうしたらいいでしょう。キーはユニークです、重複しません。
アドバイスお願いします。
0917nobodyさん2008/06/24(火) 00:15:21ID:???
'dog'に位置なんてありません。
0918nobodyさん2008/06/24(火) 00:22:50ID:???
>キーはユニークです、重複しません。
当 た り 前 だ w w w

array_search('dog', array_keys( $testAry ) );
09199162008/06/24(火) 00:54:44ID:xMpVBPQk
>>917
どういうことですか?
>>918
ありがとうございました 助かりました
0920nobodyさん2008/06/24(火) 03:33:24ID:???
>>919
分かりやすく書くと

$testAry = array();
$testAry['dog'] = 5;
$testAry['dog'] = 10;

print $testAry['dog']; // 10
0921nobodyさん2008/06/24(火) 03:35:28ID:???
いや分かんないそれw
0922nobodyさん2008/06/24(火) 05:37:00ID:???
KEYを通常の配列に置き換えて考えてみればいい。
$array[0] = 1 と、$array[0] = 5 は共存しない。
当たり前だよね。連想配列のKEYというのは、数字の添え字を文字に置き換えただけ。

つまり、上記と同様に、
$array['dog'] = 1 と、$array['dog'] = 5 は共存しない。

正直、>>919レベルの質問は初心者スレに書いてくれと毎回思う。
はっきり言うけど、邪魔。ちなみに俺は、>>918
0923nobodyさん2008/06/24(火) 05:51:34ID:???
眠気が吹き飛ぶ程に笑った
09249042008/06/24(火) 10:45:20ID:???
>>906
mssqlの接続について調べたら、どこも再コンパイルするようにと書いてあったからなんですよ。
肝心の再コンパイルについてのことを詳しく書いてる場所が無かったので相談に乗っていただこうと
こちらに書かせていただきました。
0925nobodyさん2008/06/24(火) 11:09:18ID:???
phpinfo() を表示させてみ
0926nobodyさん2008/06/24(火) 11:11:23ID:???
つーかコンパイルくらいで何躊躇してんだか。
心配ならバックアップ取るなり別マシンでやってみるなりすれば。
09278982008/06/24(火) 11:12:24ID:ayMy4FEX
このスルーはなんなんだろう。分かり難い?
0928nobodyさん2008/06/24(火) 11:16:51ID:???
好きにすればって感じ
09299112008/06/24(火) 11:44:04ID:tF7holEs
preg_match_all($pattern, $string, $r);
echo "<pre>";
print_r($r);
echo "</pre>";
の出力は下記のようになりました
なんで項目が44個ずつなのかワカラナイ…
*適宜改行してあります
*本文長杉出たので2回連投します
09309112008/06/24(火) 11:44:36ID:tF7holEs
Array(

[0]=>Array([0]=>[1]=>1[2]=>[3]=>1[4]=>aaa[5]=>[6]=>1[7]=>[8]=>2[9]=>[10]=>2
[11]=>[12]=>2[13]=>[14]=>3[15]=>[16]=>3[17]=>[18]=>3[19]=>[20]=>4[21]=>
[22]=>4[23]=>[24]=>4[25]=>[26]=>5[27]=>[28]=>5[29]=>[30]=>5[31]=>[32]=>6
[33]=>[34]=>6[35]=>[36]=>6777[37]=>aaaa[38]=>[39]=>8[40]=>[41]=>8[42]=>[43]=>8[44]=>)

[1]=>Array([0]=>[1]=>[2]=>[3]=>[4]=>aaa[5]=>[6]=>[7]=>[8]=>[9]=>[10]=>[11]=>[12]=>
[13]=>[14]=>[15]=>[16]=>[17]=>[18]=>[19]=>[20]=>[21]=>[22]=>[23]=>[24]=>[25]=>
[26]=>[27]=>[28]=>[29]=>[30]=>[31]=>[32]=>[33]=>[34]=>[35]=>[36]=>[37]=>aaaa
[38]=>[39]=>[40]=>[41]=>[42]=>[43]=>[44]=>)

[2]=>Array([0]=>[1]=>1[2]=>[3]=>1[4]=>[5]=>[6]=>1[7]=>[8]=>2[9]=>[10]=>2[11]=>
[12]=>2[13]=>[14]=>3[15]=>[16]=>3[17]=>[18]=>3[19]=>[20]=>4[21]=>[22]=>4[23]=>
[24]=>4[25]=>[26]=>5[27]=>[28]=>5[29]=>[30]=>5[31]=>[32]=>6[33]=>[34]=>6[35]=>
[36]=>6[37]=>[38]=>[39]=>8[40]=>[41]=>8[42]=>[43]=>8[44]=>)

[3]=>Array([0]=>[1]=>[2]=>[3]=>[4]=>[5]=>[6]=>[7]=>[8]=>[9]=>[10]=>[11]=>[12]=>
[13]=>[14]=>[15]=>[16]=>[17]=>[18]=>[19]=>[20]=>[21]=>[22]=>[23]=>[24]=>[25]=>
[26]=>[27]=>[28]=>[29]=>[30]=>[31]=>[32]=>[33]=>[34]=>[35]=>[36]=>777[37]=>
[38]=>[39]=>[40]=>[41]=>[42]=>[43]=>[44]=>))
0931nobodyさん2008/06/24(火) 11:45:45ID:???
0932nobodyさん2008/06/24(火) 11:57:07ID:???
いちいち貼るなバカ
0933nobodyさん2008/06/24(火) 12:05:54ID:???
真ん中の、.* は0回以上だからな、 .+ にしてみ。
09349112008/06/24(火) 12:12:26ID:tF7holEs
>>932
申し訳ない…

>>933
ちょっとスッキリ
[0] => Array
(
[0] => 1
[1] => 1
[2] => aaa1
[3] => 2
[4] => 2
[5] => 2
[6] => 3
[7] => 3
[8] => 3
[9] => 4
[10] => 4
[11] => 4
[12] => 5
[13] => 5
[14] => 5
[15] => 6
[16] => 6
[17] => 6777
[18] => aaaa8
[19] => 8
[20] => 8

0935nobodyさん2008/06/24(火) 12:53:03ID:???
>>915などの言うとおりみたい
1=$1,2=$2,3=$3た
で置換してみ
0936nobodyさん2008/06/24(火) 14:23:14ID:bfjplt45
CGIなんて触った事ないんだが、GD使った画像処理スクリプトつくんなきゃならなくなったんで質問させてください。

レンタル鯖にGD用のTrueTypeフォントがインストールされているのか?

サポートに問い合わせ

回答来たけどよく分からん

俺無知乙

色々ググって調べる

phpinfoの./configure欄に--with-freetype-dir=/usr/localとあることが判明

これって使えないの? ←いまここ

という感じで、もう一度サポートに
・/usr/local 以下のフォント一覧の表示方法(もしくは一覧そのもの)
を聞けばいいのでしょうか? それと、このフォントはCGIでも使えるのでしょうか?

ちなみに俺が最初にした質問は
>GDライブラリを使おうと思っていて、enabledであることを確認しました。
>そこで、恐らく幾つかのフォント(特にTrueTypeなどのアウトラインフォント)を
>フォローしていると思うのですが、フォントがインストールされているパスと
>フォントファイル名一覧を教えていただけないでしょうか。よろしくお願いいたします
こんな感じで、それに対する回答は各種パスやらバージョンやらPerlモジュール検索の仕方なんかで、結局フォントの在り処が分からなかったので放置してます
0937nobodyさん2008/06/24(火) 14:40:10ID:???
>>936
別にOSにインストールする必要は無い。
無かったら自分でファイル用意すりゃいいだけ。
フリーの日本語フォントもあるからそれで試したら。
0938nobodyさん2008/06/24(火) 14:40:45ID:???
おっとw
0939nobodyさん2008/06/24(火) 15:05:13ID:???
ついでに言うけど、freetype-dir はライブラリの置き場所指定するだけだし、
通常サーバでフォントが必要になることはほとんどないと思うから
そういう但し書きが無い限りフォントは無いと思うよ。
フリーなやつ探したり、自分で買ったやつを自分の場所に置いて使うんじゃないかな。
09409362008/06/24(火) 15:10:48ID:bfjplt45
>>937
その発想は無かった。
自分のPCにインストールして、TTFファイルをコピペして鯖に置けばいいのかな。
とにかく、ありがとう。
09419362008/06/24(火) 15:15:40ID:bfjplt45
>>939
>freetype-dir はライブラリの置き場所指定するだけだし
/usr/local なんてどう考えてもおかしいと思ってたけど、そういうことだったのか。
丁寧な補足に感謝。
0942hoge-php-users2008/06/24(火) 17:10:26ID:???
PHPユーザ会とかの勉強会って基本、ディスカッション形式なのでしょうか?
出たいのですが、最初は雰囲気になれるために聞いているだけでいたいですorz...

過去にこういった集まりに出た方、いらっしゃいましたらご教示お願いいたします。m(_ _)m
0943nobodyさん2008/06/24(火) 17:35:22ID:XKNDO3RB
PHP5のリファレンスについての質問です。
あまりよく理解していません。
echoするときに$ary[20]という変数名を使いたくない場合、
メモリを節約する(変数のコピーをしない?)にはこれでいいですか?


$ary[20]; //大きなデータ

function foo(&$ary[20]) {
  //なんらかの処理
}

foo($ary[20]);
$data =& $ary[20];

echo $data;
0944シャープ2008/06/24(火) 18:00:29ID:22rywXeu
test/
ディレクトリにあるファイルで、
testから始まるファイルをすべて削除するには、どうすればよいのでしょうか?
そんなことは可能でしょうか?
0945hoge-php-users2008/06/24(火) 18:34:02ID:???
>>943さん
それでOKです。
メモリを節約する目的で使うのが適当か、はベンチマークとってください。

>>944さん
確か
`rm test/test*`
でできたはず
違っていたら大変なので問題ないところでテストしてください。
0946hoge-php-users2008/06/24(火) 18:38:54ID:???
訂正
`rm -rf test/test*`
レンタルサーバとかでは使えないかも…
0947nobodyさん2008/06/24(火) 18:49:24ID:???
>>946
unlink
じゃなかったっけ?
09489432008/06/24(火) 19:31:24ID:XKNDO3RB
>>945
ありがとうございます。
安心しました。
0949nobodyさん2008/06/24(火) 19:33:23ID:???
>>944
http://jp.php.net/rmdir
の下の方にあるユーザーからのコメントを参考にすると良いよ

>>945
それはただ単にシステムコールしてるだけだろ

0950nobodyさん2008/06/24(火) 19:57:50ID:???
そりゃシステム関数呼んでるけど
それをシステムコールとは言わん
0951nobodyさん2008/06/24(火) 19:59:58ID:???
>>945
明示的に参照にしても意味ないよ
0952nobodyさん2008/06/24(火) 20:35:11ID:ED0kh2wU
function hoge( $foo = $bar ) {
 ...
}

上のような感じで、関数の引数のデフォルト値に変数を指定できません。
どうしても実現したいのですが、下のような感じにしないとダメですか(ノ_<。)

function hoge( $foo = NULL ) {
 global $bar;
 if( is_null( $foo ) ) $foo = $bar;
 ...
}
0953シャープ2008/06/24(火) 20:35:39ID:22rywXeu
回答ありがとうございます。
僕は、ファイルをマッチして、ループで削除を繰り返すと考えていたのですが、そのようなことはどうすればできますか?
0954nobodyさん2008/06/24(火) 20:42:33ID:???
>>953
後出しうぜー
http://www.php.net/manual/ja/function.opendir.php
http://www.php.net/manual/ja/control-structures.while.php
http://www.php.net/manual/ja/function.preg-match.php
http://www.php.net/manual/ja/function.unlink.php

あとは自力で。
0955nobodyさん2008/06/24(火) 20:54:56ID:???
>>952
マニュアル読まない房うぜー
http://www.php.net/manual/ja/functions.arguments.php

あとは自力で。
09569522008/06/24(火) 21:17:11ID:???
>>955
ご案内頂いたURLは、既読です。
引数を、別のグローバル変数から値渡しする方法は書かれていませんでした。
0957nobodyさん2008/06/24(火) 21:19:07ID:???
>>956
ちゃんと読めよ
0958nobodyさん2008/06/24(火) 21:19:25ID:???
>>956
引数にwhileループを適用する方法も書かれてないけど、これについてはどう思いますか?
09599522008/06/24(火) 21:30:05ID:???
>>957
ちゃんと読んでいます。
>デフォルト値は、定数式である必要があり、 (例えば) 変数やクラスのメンバーであってはなりません。
デフォルト値に変数をそのまま使えないということも理解しています。
だから、>>952に自分なりの回避案を記載し、「この方向で最適でしょうか?」と質問しているのです。


>>958
意味が分かりません。
0960nobodyさん2008/06/24(火) 21:34:18ID:???
>>959
global変数なんて使うな
09619522008/06/24(火) 21:43:58ID:???
>>952に対して、まともなご返答を頂けないでしょうか?

>>960
参照渡しでなく、値渡しをするだけであり、
関数外へグローバル変数への影響は一切与えませんので、
問題はないと理解していますが、使ってはいけない理由を教えて下さい。
0962nobodyさん2008/06/24(火) 21:45:23ID:???
自分で調べろボケ
アドバイスくれっつーからしただけだ。
まともな返答が欲しけりゃまともな質問者になれ。1も読んでないくせに減らず口叩くな。
0963nobodyさん2008/06/24(火) 21:51:33ID:???
>>952を見て「回避策は正しいですか」という質問には読めず
「デフォルト引数値に変数を使う方法はありませんか」としか
思えない俺には、まともなご返答をする資格はないな
0964nobodyさん2008/06/24(火) 21:51:45ID:???
>>962
相談「引数のデフォルト値にグローバル変数を値渡ししたい」
アドバイス「グローバル変数なんて使うな」

これはアドバイスとは言わない。
つか、>>962みたいなのしかいないならいいや。
自分よりレベルが下の人間の回答は役に立たない。
0965nobodyさん2008/06/24(火) 22:04:50ID:???
>>952
それをどうしても実現しなきゃならん理由って何なの?
普通に組んでたらそんな事ってほぼ無いと思うんだが・・・

define('HOGE','aiueo');

function aaa($a = HOGE) {
 echo $a;
}

aaa();

こんな感じでやったら?
0966nobodyさん2008/06/24(火) 22:08:43ID:???
$arg = ('foo' => $bar);
function ($arg) {
extract($arg);
print $foo;
}
0967nobodyさん2008/06/24(火) 22:10:42ID:???
>>965
値渡ししたい変数というのは、
配布するスクリプトでユーザーが設定するコンフィグ変数なのです。

ですので、>>965氏のおっしゃるように、
実際は定数として扱うのが正しいのですが、
定数の書き方にしてしまうと、
PHPを知らない対象ユーザーが、間違えた書き方をしてしまう可能性が出てくるのです。
0968nobodyさん2008/06/24(火) 22:21:46ID:???
function hoge($foo = NULL) {
 if (is_null( $foo)) $foo = $GLOBALS['bar'];
 ...
}
0969nobodyさん2008/06/24(火) 22:31:02ID:???
>>968
>>952で自分なりの回避策として考えていましたが、
やはり、それが最適ですかね?
0970nobodyさん2008/06/24(火) 22:58:15ID:???
ポカーン
0971nobodyさん2008/06/24(火) 23:06:25ID:???
>>967
きっちり注意書き書いておけば大丈夫だと思うがな・・
でなければ設定自体がまともにできんだろ・・・

0972nobodyさん2008/06/24(火) 23:14:26ID:???
そもそもPHPを知らないユーザがイジって不安ならxmlやini形式とかの
設定ファイルにしてパースしろよって思う
0973nobodyさん2008/06/24(火) 23:45:45ID:???
それやっても>>952は同じ問題にぶち当たるけどね
0974nobodyさん2008/06/24(火) 23:50:37ID:???
>>952が書いたことやりたいなら

function hoge(&$bar){
}

とかで参照渡しでいいじゃないの。
0975nobodyさん2008/06/25(水) 00:14:41ID:???
>>974 関数抜けた時に消えるよ、Cやら他言語やってる奴が陥る典型例
グローバル変数は変らない

ユーザの書き換えミスを心配するなら値チェックするフォームが妥当だと思う
is_null使う所なのか? とか全体的に違和感の有る書き方だけど
0976nobodyさん2008/06/25(水) 00:34:40ID:???
>>975
あぁ、そうだったんだ。参照渡しとかあんまりやらないから知らなかった。

ユーザ情報がなんたらとかバリデーションかますとかだったら、クラスでやったほうがいいんでないの。
とか、そういう方向性は。
0977nobodyさん2008/06/25(水) 00:40:05ID:???
>>976 俺もやらかした、気にすんなw

グローバル関数に関してはこういうもんだから、別個にVBでも何でも良いから
ファイル書きかえる実行ファイル用意して設定を入れたphpファイル作らせて
からアップロードなりさせたら良いんじゃないの。

気になることがユーザの間違いなら対処方法としてはそれで良いんじゃねのかと
コードから自己顕示欲が漂う
レス数が950を超えています。1000を超えると書き込みができなくなります。