探検


【待望】PerlユーザのためのPHP入門

1俺様
垢版 |
03/02/27 15:17ID:tJsRCtRD
見事Perl→PHPへの脱皮に成功した俺様が
両者の違いを中心に講義してやる。
今までPerlマンセーだったやつはこれを機にPHPに変更しよう也。
質問もガンガン書いてくれ。
このPerlの文はPHPだとどう書くの?とか。
03/03/01 20:50ID:???
{
my $static = 0;
sub foo () {
return ++$static;
}
}
68nobodyさん
垢版 |
03/03/01 21:03ID:b+i+15ud
だめだ・・・functionの時点でわからそ。
69俺様
垢版 |
03/03/01 21:27ID:UE12tRyA
>>66
すまんが俺様は知らんな。
全ての定義済の変数を配列で返すような
関数ならあるが。

<?php
$def_arr= get_defined_vars();
//初期設定(_SERVER["SERVER_ADDR"]のようなもの)
//を含む全ての定義済みの変数の配列を得る)

$a=3;
$abc=10;

$arr = get_defined_vars();
//初期設定のものに上の2つが追加された。

$new_arr = array_diff($arr,$def_arr);
//2つの配列の差を得る。

print_r($new_arr);//配列の内容を出力
?>

#Array ( [a] => 3 [abc] => 10 )
03/03/01 21:29ID:???



























71俺様
垢版 |
03/03/01 21:32ID:UE12tRyA
>>67
なるほど。Perlでstaticを実現した例ですね。
まあ、PHPの場合はわざわざ自前で作らなくても
最初からstaticという命令が用意されているということです。
72俺様
垢版 |
03/03/01 21:35ID:UE12tRyA
>>68
Perlをある程度理解していれば
わかるようにしたいのだが、
(Perlも未経験という場合はちょっと厳しいです。)
どこら辺がわからんだろうか?
とりあえずPerlのsubをfunctionに置き換えちゃえばOKだ。
03/03/01 21:35ID:???




























 
74生徒B
垢版 |
03/03/01 21:56ID:???
>>69
どもども。
ちょっと面倒ですね。
03/03/01 22:00ID:???

























03/03/01 22:12ID:???
>>66
error_reporting(E_ALL);
でどうかな。
03/03/01 22:16ID:???


























     
78生徒B
垢版 |
03/03/01 22:22ID:???
<?php
error_reporting(E_ALL);
print $a;
?>
#<b>Notice</b>: Undefined variable: a in <b> (filename)
# </b> on line <b>3</b><br />

>>76
ありがとう。うまくいきました。
03/03/01 22:23ID:???
























80俺様
垢版 |
03/03/01 22:30ID:UE12tRyA
>>76
(・∀・)イイ!

φ(.. )メモシテオコウ
error_reporting(E_ALL);
03/03/01 22:35ID:???
あいだに空を入れる人生。色即是空(w
03/03/02 00:05ID:???



























83俺様
垢版 |
03/03/02 19:03ID:SRraTB8e
よっしゃ!早くも寂れてきたぞ。今日は配列について書いておこう。

まず、Perlの場合配列値を表す変数は先頭が$でなく@になっていた。
しかしPHPではそんな面倒なことはない。どんな場合でも先頭は$でOKだ!
凄い楽そうだろ?(祝

初期化の差はこんな感じだ。

#Perl
@a = (20,10,30,3);

#PHP
$a = array(20,10,30,3);

arrayって余計な文字が付いたが細かいことは気にするな。
84俺様
垢版 |
03/03/02 19:10ID:SRraTB8e
驚くことにPHPでは

$a[] = "a";
$a[] = "b";
$a[] = "c";

$a[0] = "a";
$a[1] = "b";
$a[2] = "c";

この2つが同じ意味となるのだ。
角括弧内の数字を省略した場合、
値は配列に最後の要素として勝手に追加してくれる。
まあ、こういう独自仕様は混乱の元だから俺は上の形式で書いたことは無いがな。
わかった上で使うなら利用場面は結構多いかもしれない。
85nobodyさん
垢版 |
03/03/02 19:12ID:L99j8QKU
↓↓↓↓↓★ピンクエンジェル★↓↓↓↓↓
http://www.pink-angel.jp/betu/linkvp/linkvp.html
86俺様
垢版 |
03/03/02 19:19ID:SRraTB8e
配列の関数一つ一つ説明するのは面倒だから
あとは>>32のサイトや公式のマニュアルでも読んでくれ。
Perlで実現できてたことの代替手段は大体存在してる。

87俺様
垢版 |
03/03/02 19:26ID:FrxqKaYz
多次元配列は一つ注意を。
これは前も似たようなこと言ったが

$a[0][1] = 41;
print "$a[0][1]";

Perlだと期待する結果41が出力されるが、
PHPだとArray[1]という怪しげな結果が出力されてしまう。
後ろの[1]はただの文字列として認識されてしまっているようなのだ。
以下のどちらかにしないといけない。

$a[0][1] = 41;
print "{$a[0][1]}";
print "".$a[0][1];
88俺様
垢版 |
03/03/02 19:28ID:FrxqKaYz
まあ、おかしくなったらまずは変数を{}で括ってみろってことだ。
03/03/02 19:51ID:???
@a{qw(a b c)} = @b[1..3];
こういうのはどう書く?
03/03/02 20:32ID:???























91俺様
垢版 |
03/03/02 21:07ID:FrxqKaYz
>>89
うーん、よくわからんな(汗
誰かわかる人募集中だ!

まあ、とりあえず根性で全部書いておけ。
$a = array(
"a" => $b[1],
"b" => $b[2],
"c" => $b[3],
)
03/03/02 23:06ID:???
なんで、空投稿するんだよ。見ずらいんだよ。
03/03/02 23:16ID:???
日本語すら満足に書けない俺様が講師のクソスレはここですか?

見ずらいんだよ。
見ずらいんだよ。
見ずらいんだよ。
見ずらいんだよ。
見ずらいんだよ。
見ずらいんだよ。
見ずらいんだよ。
見ずらいんだよ。
見ずらいんだよ。
見ずらいんだよ。
見ずらいんだよ。
見ずらいんだよ。
見ずらいんだよ。
見ずらいんだよ。
見ずらいんだよ。
見ずらいんだよ。
見ずらいんだよ。
見ずらいんだよ。
見ずらいんだよ。
見ずらいんだよ。
見ずらいんだよ。
見ずらいんだよ。

03/03/02 23:20ID:???
ねちっこいね。うざいというかきもい。
03/03/02 23:27ID:???
  ∧_∧
 ( ´∀`)<きもい。きもい。
 (     つ
 (_○___)
03/03/02 23:31ID:???
見づらいんだよ。でした。すまん。
俺は「俺様」じゃないです。
03/03/03 04:20ID:???
普通に見てる人もいるんで、煽ってるやつらマジでどっかいって。
03/03/03 08:39ID:???
>>97
普通にウザがってる人もいるんで自分のサイトでやるように説得してください。
99俺様
垢版 |
03/03/03 10:08ID:gt/b6+qo
煽りでもレスが付かないよりは大歓迎だ!
>>98
需要も少しはあるようだからまあ、多めに見てもいいじゃないか。
WebProg板ってスレ保持数に比べて活性化しているスレ数が非常に少ないから
他のスレがdat落ちして困るとかも無いしな。ウザかったら見なければ(・∀・)イイ!
2chブラウザ使ってこのスレごとあぼーんだ。
100俺様
垢版 |
03/03/03 10:33ID:gt/b6+qo
今日はオブジェクト指向について書いておこう。
PHPもPerlもJavaやC++に代表されるオブジェクト指向言語である。

Perlのオブジェクト指向についてあまり知らないんですが、
Javaに比べるとPHPのオブジェクト指向に関する仕様は
             ショボイ!!!!
今年中に出る予定のPHP5で大幅に機能がアップするらしいので
それに期待しましょう。

101俺様
垢版 |
03/03/03 10:48ID:gt/b6+qo
まず、誰でも最初に疑問に思うのが
オブジェクト指向を用いるメリットは何か?
ということだ。

再利用ができる?
そんなのオブジェクト指向じゃなくてもしてるじゃないか。
我々はprintという出力命令を何度も利用している。
printの命令が内部でどういう仕組みになっているか調べたことのある人は極少数だろう。
102俺様
垢版 |
03/03/03 11:12ID:gt/b6+qo
まあ、オブジェクト指向をうまく使えば
再利用『しやすく』はなるだろう。

まず、カプセル化(データ隠蔽)というものがある。
人間というオブジェクトの例で考えてみよう。
人間は体重というデータを持っているが
我々は外見から見ただけでは体重を正確には知れない。
例えば、彼に『体重計に乗れ』ってメッセージを送れば
正確な体重を得ることが出来る。
同様に体重に『直接』アクセスして値を変えることは出来ない。
彼に『〜を食べろ』ってメッセージを送れば
その食べた分だけ体重が増加してくれるのである。

つまり、内部で保持しているデータを隠蔽できて、
見たり変えたりするには間接的にアクセスする必要があるということなのだが、

PHPではアクセサ(アクセス制限)の概念が存在しないため
このカプセル化があっさり崩壊してしまう。
103俺様
垢版 |
03/03/03 11:35ID:gt/b6+qo
再利用のためのもう一つの便利な機能は『継承』だろう。
既存のクラスのフィールド(データ)やメソッド(機能)を引き継いで、
その上で既存の機能を修正したり新たに追加したりできるようになる。
まあ、言い方を変えれば『継ぎはぎ』みたいなものだ。

PHPでは多重継承が存在しない。
つまり、あるクラスに対して1つの親クラスからしか
フィールドやメソッドを引き継げないということだ。
同じく多重継承が禁じられているJavaではこのようなことがしたければ
interfaceで代替が可能だが、
PHPではその代替案すら用意されていない。

多重継承なんかしなくてもプログラムは作れるという主張も根強いが、
まあ、それを言ったら継承なんかしなくてもプログラムを作れる
と言っても同じようなことである。
104俺様
垢版 |
03/03/03 12:07ID:gt/b6+qo
1つぐらいサンプルを書いてみよう。
因みに、このように変数に日本語使っても大丈夫だ。
(普段はお奨めしない。)

<?php
class 人{ //クラス名
var $体重; //フィールド
function 人($値){ //コンストラクタ(初期化)
$this->体重=$値; //値をフィールドへ代入
}
function 体重計に乗る(){ return $this->体重;} //体重を出力するメソッド
function 食べる($量){ $this->体重+=$量;} //体重を量だけ加える
}

$俺様=new 人(60);
print $俺様->体重計に乗る();
print ",";
$俺様->食べる(0.5);
print $俺様->体重計に乗る();
#60,60.5
?>
105俺様
垢版 |
03/03/03 12:10ID:gt/b6+qo
クラス内で自分自身のフィールドにアクセスするのにも
$this->体重
このように$thisとかいうものが必要なのだ。
(Javaの場合は省略可能)
これは長いコードを書こうとするとわかるが面倒すぎ。
106俺様
垢版 |
03/03/03 12:16ID:gt/b6+qo
ここで>>102で指摘した問題が起きる。
<?php
class 人{
var $体重;
function 人($値){
$this->体重=$値;
}
function 体重計に乗る(){ return $this->体重;}
function 食べる($量){ $this->体重+=$量;}
}

$俺様=new 人(60);
$俺様->体重 = 200; //おいおい、勝手に体重変えられたYO!
print $俺様->体重; //体重計使わなくても調べられるのかYO!
#200 俺は相撲取りじゃねえYO!
?>

てなわけで体重計とかのメソッドを作る意味がなくなってしまうのだ。
(Javaの場合はフィールドの前にprivateを付けるなどすれば
このような直接アクセスを防ぐことが出来る。)
107俺様
垢版 |
03/03/03 12:26ID:gt/b6+qo
コンストラクタと言うのは結構便利なんだがな。
<?php
class 人
{
var $体重;
function 人($値){
if($値<0) print "( ´,_ゝ`)プ";
else $this->体重=$値;
}
}

$俺様=new 人(-20);
#( ´,_ゝ`)プ
?>

このように体重に負の値が入れられるのを
防ぐことが出来る。
まあ、>>106のようにされたら結局は意味が無いのだが・・・
108俺様
垢版 |
03/03/03 12:30ID:gt/b6+qo
というわけで長くなったが
PHPのオブジェクト指向は
現在の仕様では大したことがないということで
積極的に使う必要は無いだろう。
機能をグループ化したい人とか、
『何となくかっこいいことしたい人とか』
(ただし、使い方を誤ると逆にかっこ悪くなる)
にはしても損は無い程度だろうか。

いずれにしてもPHP5に期待。
109俺様
垢版 |
03/03/03 12:33ID:gt/b6+qo
否定的なことばかり書いてたが
最近の本とか見るとメリットしか書いてなくて
オブジェクト指向マンセーになる奴が多すぎる気がするから
敢えて逆行して書いただけで、
メリットをもっと強調するのなら実際は
そこまでひどいわけでもないがな。
110nobodyさん
垢版 |
03/03/03 23:34ID:???


98 名前:nobodyさん 投稿日:2003/03/03(月) 08:39 ID:???
>>97
普通にウザがってる人もいるんで自分のサイトでやるように説得してください。


99 名前:俺様 投稿日:2003/03/03(月) 10:08 ID:gt/b6+qo
煽りでもレスが付かないよりは大歓迎だ!
>>98
需要も少しはあるようだからまあ、多めに見てもいいじゃないか。
WebProg板ってスレ保持数に比べて活性化しているスレ数が非常に少ないから
他のスレがdat落ちして困るとかも無いしな。ウザかったら見なければ(・∀・)イイ!
2chブラウザ使ってこのスレごとあぼーんだ。


98 名前:nobodyさん 投稿日:2003/03/03(月) 08:39 ID:???
>>97
普通にウザがってる人もいるんで自分のサイトでやるように説得してください。


99 名前:俺様 投稿日:2003/03/03(月) 10:08 ID:gt/b6+qo
煽りでもレスが付かないよりは大歓迎だ!
>>98
需要も少しはあるようだからまあ、多めに見てもいいじゃないか。
WebProg板ってスレ保持数に比べて活性化しているスレ数が非常に少ないから
他のスレがdat落ちして困るとかも無いしな。ウザかったら見なければ(・∀・)イイ!
2chブラウザ使ってこのスレごとあぼーんだ。
111nobodyさん
垢版 |
03/03/03 23:34ID:???


98 名前:nobodyさん 投稿日:2003/03/03(月) 08:39 ID:???
>>97
普通にウザがってる人もいるんで自分のサイトでやるように説得してください。


99 名前:俺様 投稿日:2003/03/03(月) 10:08 ID:gt/b6+qo
煽りでもレスが付かないよりは大歓迎だ!
>>98
需要も少しはあるようだからまあ、多めに見てもいいじゃないか。
WebProg板ってスレ保持数に比べて活性化しているスレ数が非常に少ないから
他のスレがdat落ちして困るとかも無いしな。ウザかったら見なければ(・∀・)イイ!
2chブラウザ使ってこのスレごとあぼーんだ。


98 名前:nobodyさん 投稿日:2003/03/03(月) 08:39 ID:???
>>97
普通にウザがってる人もいるんで自分のサイトでやるように説得してください。


99 名前:俺様 投稿日:2003/03/03(月) 10:08 ID:gt/b6+qo
煽りでもレスが付かないよりは大歓迎だ!
>>98
需要も少しはあるようだからまあ、多めに見てもいいじゃないか。
WebProg板ってスレ保持数に比べて活性化しているスレ数が非常に少ないから
他のスレがdat落ちして困るとかも無いしな。ウザかったら見なければ(・∀・)イイ!
2chブラウザ使ってこのスレごとあぼーんだ。
                           
112nobodyさん
垢版 |
03/03/03 23:34ID:???


98 名前:nobodyさん 投稿日:2003/03/03(月) 08:39 ID:???
>>97
普通にウザがってる人もいるんで自分のサイトでやるように説得してください。


99 名前:俺様 投稿日:2003/03/03(月) 10:08 ID:gt/b6+qo
煽りでもレスが付かないよりは大歓迎だ!
>>98
需要も少しはあるようだからまあ、多めに見てもいいじゃないか。
WebProg板ってスレ保持数に比べて活性化しているスレ数が非常に少ないから
他のスレがdat落ちして困るとかも無いしな。ウザかったら見なければ(・∀・)イイ!
2chブラウザ使ってこのスレごとあぼーんだ。


98 名前:nobodyさん 投稿日:2003/03/03(月) 08:39 ID:???
>>97
普通にウザがってる人もいるんで自分のサイトでやるように説得してください。


99 名前:俺様 投稿日:2003/03/03(月) 10:08 ID:gt/b6+qo
煽りでもレスが付かないよりは大歓迎だ!
>>98
需要も少しはあるようだからまあ、多めに見てもいいじゃないか。
WebProg板ってスレ保持数に比べて活性化しているスレ数が非常に少ないから
他のスレがdat落ちして困るとかも無いしな。ウザかったら見なければ(・∀・)イイ!
2chブラウザ使ってこのスレごとあぼーんだ。
 
113nobodyさん
垢版 |
03/03/04 02:34ID:???
あんまり資源無駄に使ってるとアク禁食らっちゃうよー
114nobodyさん
垢版 |
03/03/04 05:05ID:???
このスレすごく良いです。頑張ってください。
115nobodyさん
垢版 |
03/03/04 07:56ID:6TNNfPas
>>113
同意。>>1は反省しる。

>>114
自作自演晒しage
116俺様
垢版 |
03/03/04 10:17ID:SJwb4sM+
オブジェクト指向に関するレスは0か。
まあ、使わなければならない機能でもないから放って置いてくれ。
今日はそろそろ具体的なHTMLドキュメントの作成方法に入っていこう。

>>113
気をつけます。
>>114
(TдT) アリガトウ
>>115
俺様は朝5時になんか起きれん。
117俺様
垢版 |
03/03/04 10:29ID:SJwb4sM+
出力方法は何通りかあるので示しておきます。
自分が使いやすい方法を用いればよいだろう。

<?php
$title = "タイトル";
print "<html>";
print "<head>";
print "<title>$title</title>";
print "</head>";
print "<body>";
print "俺様のHTMLドキュメント";
print "</body>";
print "</html>";
?>

前も言ったように、CGI/Perlの場合は
print "Content-type: text/html\n\n";
こんなのが必要だったがmod_phpの場合は要らない。
上のスクリプトを書いてブラウザで開いてみれば
見事、俺様のHTMLドキュメントと出力される。
118俺様
垢版 |
03/03/04 10:50ID:SJwb4sM+
資源無駄使いって言われたので
混合させてまとめて記述しちゃうか。
<?php
$title = "タイトル";
echo "<html>"; //echoも出力命令の1つ。printと同じようなものと思って良い。
echo("<head>"); //今まで省略してたけど()を付けても構わない。printも同様。

//C言語にあったprintfも使える。%3dなど書式をいろいろ設定できる。
//printやechoと違い、()が必須なので注意。
printf("<title>%s</title>",$title);
printf("</head>");

print <<<EOD //ヒアドキュメント。HTML部分が長くてprintとか書くのが面倒なとき便利
<body>
俺様のHTMLドキュメント
</body>
EOD; //ヒアドキュメント終了
print "</html>";
?>

ヒアドキュメントはPerlでも使っていた人は多いでしょう・
Perlでは↓のように書くが、PHPではセミコロンの位置が変わっているので
間違えないように注意しよう(重要)。
print <<EOD;
...
EOD
119俺様
垢版 |
03/03/04 11:00ID:SJwb4sM+
因みに、PHPはHTML内に埋め込むことができると言うのを
利点として主張されることも多い。これは以下のように書けるからである。
<?php $title = "タイトル"; ?>
<html>
<head>
<title><?php $title ?></title>
</head>
<body>
俺様のHTMLドキュメント
</body>
</html>
このように必要な部分だけをPHPスクリプトとして認識させることが出来る。

コメントについても書いちゃおう。
Perlでは#のみだったがPHPではJavaなどで使われている以下の形式も可能である。
// コメント。#と意味は同じ。
/* これもコメント。複数行をコメントか出来るのが特徴。
つまりここもコメントになる。   */
120俺様
垢版 |
03/03/04 11:11ID:hLFJ4wUF
この利点を利用すれば
簡単なカウンタなら
カウント保存用の空ファイルさえアップしておけば
ほんの数行であっという間に出来てしまうのだ。

明日はファイル入出力をやろう。
121nobodyさん
垢版 |
03/03/04 12:54ID:???
>>116
オブジェクト指向、興味あるよ?
122nobodyさん
垢版 |
03/03/04 18:41ID:Nso2bqOx
手っ取りばやくお金もうけしましょう
http://www.h4.dion.ne.jp/~sohotop/
日給2万円も無理じゃない!!!
123nobodyさん
垢版 |
03/03/04 18:50ID:???
>122
ねずみ講じゃないの?
124nobodyさん
垢版 |
03/03/04 18:55ID:QqzA7g89
http://www.agemasukudasai.com/bloom/
125nobodyさん
垢版 |
03/03/04 19:35ID:???
香ばしいです、はい。
126nobodyさん
垢版 |
03/03/04 21:46ID:???
















OOの無いPHPを使う位なら俺はPerlを使う。








127生徒B
垢版 |
03/03/05 01:20ID:???
>>126
入門なんだから、大目に見てくださいな。
128俺様
垢版 |
03/03/05 10:25ID:RSVIcXg3
>>126
まあ、まずはOOを使うメリットをよく考えないと。
モジュールでも作るのか?

>>127
OOの入門レベルなら
プログラミング全体で見てもやはり入門であることには違いない。

129nobodyさん
垢版 |
03/03/05 10:41ID:???

























130俺様
垢版 |
03/03/05 10:50ID:RSVIcXg3
では、ファイル操作について簡単な説明をしておこう。
ファイルの開き方は、PerlではopenだったがPHPではfopenになる。
読み取りや書き込みなどのモードもPerlとは仕様が変わり
C,Java寄りになっているので注意しよう。
PHP:
$fp = fopen(filename, mode); //ファイルポインタの位置が返る
Perl:
open(FILE, filename); //返り値は正常時が1、失敗だと0

オープンモードの選択方法がPerlだと+>みたいのをファイル名に直接つけていたのが
PHPだと2つ目の引数として別に記述するようになった。
ファイルハンドラは引数に記述するのではなく、
返り値になったのでそこも注意しよう。

具体的な仕様はマニュアルを参照。
http://www.php.net/manual/ja/function.fopen.php
131nobodyさん
垢版 |
03/03/05 10:52ID:???
>>130
なぁ、お前学校行ってないの?
132俺様
垢版 |
03/03/05 11:07ID:RSVIcXg3
では超簡易カウンタを作ってみよう。
仕様としてはファイルcount.txtの1行目にカウンタ数値を書くだけのものだ。
まず予めcount.txtを作成して0を記述しておくこと。

<?php
$fp = fopen("count.txt","r");
//count.txtを読み出しモードで開く。
//$fpはファイルポインタであり、rの場合ファイルの先頭の位置が返される。
$count = fgets($fp); //改行かファイルの終端まで読みこんで$countへ代入。
fclose($fp); //いったん閉じる
$count++;
$fp = fopen("count.txt","w"); //書き込みモード
fwrite($fp,$count); //書き込み。
fclose($fp);
?>
<html>
<body>
貴方は<?php print $count; ?>人目の俺様の弟子じゃ。
</body>
</html>
133俺様
垢版 |
03/03/05 11:16ID:RSVIcXg3
>>131
オマエモナー
134俺様
垢版 |
03/03/05 11:25ID:RSVIcXg3
では明日はいよいよフォームの処理を行おう。
135俺様
垢版 |
03/03/05 11:27ID:RSVIcXg3
ちなみにレッツPHPにファイルを1回しか開かなくていいバージョンが書かれているな。
http://php.s3.to/counter/
同時アクセスの際の弊害が置きにくくなるからそっちの方がいいだろう。
flockもしておくこと。
136俺様
垢版 |
03/03/05 11:56ID:5JBlRiko
因みに、PHPはHTML内に埋め込むことができると言うのを
利点として主張されることも多い。これは以下のように書けるからである。
<?php $title = "タイトル"; ?>
<html>
<head>
<title><?php $title ?></title>
</head>
<body>
俺様のHTMLドキュメント
</body>
</html>
このように必要な部分だけをPHPスクリプトとして認識させることが出来る。

コメントについても書いちゃおう。
Perlでは#のみだったがPHPではJavaなどで使われている以下の形式も可能である。
// コメント。#と意味は同じ。
/* これもコメント。複数行をコメントか出来るのが特徴。
つまりここもコメントになる。   */
137nobodyさん
垢版 |
03/03/05 13:34ID:E53JqQ+I
PHPには「〜?〜:〜」に該当する関数等はありまつか?
下のようなのが沢山あるのでなるべくif文は使いたくないんです。

例1:(Perl)
printf "<a href=\"%s\" target=\"%s\">%s</a>\n",&link($a?$b:$c),$d?"_blank":"_top",$d?"新しいウィンドウで開く":($e?"次のページ":"更新");
138nobodyさん
垢版 |
03/03/05 13:39ID:???
条件演算子としては、他に "?:" (または trinary) 演算子があります。 この演算子の動作は、Cまたは他の多く言語と同じです。


(式1) ? (式2) : (式3);



この式は、式1 がTRUEの場合に 式2 を、 式1 がFALSEの場合に 式3 を値とします。

と、PHPマニュアルからまんま転載してみる。
139137
垢版 |
03/03/05 13:44ID:???
>>139
ありがとう。
PHPに乗り換えようかと思います。
140俺様
垢版 |
03/03/05 14:02ID:5JBlRiko
PHPによるHTTP認証のフックは、Apacheモジュールとして実行した時のみ 有効で、
CGI版では利用できません。Apache モジュールPHPスクリプトにお いて、header()
関数を使用して "Authentication Required" メッセージをクライアントブラウザに送る
ことが可能です。 これにより、クライアントブラウザにユーザー名とパスワードを入力する ウイ

ンドウがポップアップ表示されます。一度、ユーザーがユーザー名と パスワードを
入力すると、PHP スクリプトを含むその URL は、次回以降、 定義済みの変数 PHP_AUTH_USER, PHP_AUTH_PW, and PHP_AUTH_TYPEにそれぞれユーザー名
、 パスワード、認証型を入力してコールされます。 定義済みの変数は、配列 $_SE
RVER および $HTTP_SERVER_VARS でアクセス可能です。 "Basic" 認証のみ
がサポートさ
れています。詳細は、 header()を参照下さい。

141俺様
垢版 |
03/03/05 19:13ID:RSVIcXg3
>>140
俺様の騙りがついに
キタ━(゚∀゚)━( ゚∀)━( ゚)━( )━(゚ )━(∀゚ )━(゚∀゚)━!!!!
142nobodyさん
垢版 |
03/03/05 19:16ID:juhSxd8a
http://www.agemasukudasai.com/bloom/
143nobodyさん
垢版 |
03/03/05 21:23ID:???
つづきまだー?
144nobodyさん
垢版 |
03/03/05 22:26ID:???
>>132
ファイルロックとかしなくても大丈夫?
145nobodyさん
垢版 |
03/03/05 22:51ID:???
$a : $b ? $c = 1;

PHPはこれ書ける?
146俺様
垢版 |
03/03/05 23:06ID:MFbIbSdy
>>143
まあ、1日にいくつも書くの疲れるから。
あせらず明日まで待ってクレイ。

>>144
実際に使うなら、ファイルロックしないと( ゚д゚;)マズーだろうな。
シンプルカウンタは>>135のを使ったほうが良い。

>>145
?と:が逆じゃん?
>>138
147nobodyさん
垢版 |
03/03/05 23:17ID:5JBlRiko
>>145
三項演算子まともに使えない自作自演俺様晒しage
148俺様
垢版 |
03/03/05 23:47ID:MFbIbSdy
>>147
ん?>>146で言った逆っての間違ってたか?
そんなことはないと思うが・・・
149nobodyさん
垢版 |
03/03/06 00:26ID:???
>>145-148
てか>>137-138で既出だし。
150nobodyさん
垢版 |
03/03/06 00:48ID:???
ふふふ。ひっかかったか。

Perlは三項演算子を左辺値として使える。
って全然利用価値はないけど、知ってるか試しただけ。
151nobodyさん
垢版 |
03/03/06 00:49ID:???
あぁ。$a ? $b : $c だな。・・
152nobodyさん
垢版 |
03/03/06 01:02ID:uZwldhHh
>>150
ひっかかってた俺様晒しage
153nobodyさん
垢版 |
03/03/06 01:05ID:???
>>152
( ´,_ゝ`)プ
154俺様
垢版 |
03/03/06 01:07ID:ZBXb+hSM
>>150
何が引っかかったのかよくわからん。
>>145は逆だからかエラーでてるし。
155俺様
垢版 |
03/03/06 01:13ID:ZBXb+hSM
>>150
とりあえず
$a ? $b : $c = 1;
って正しく書いてくれたら面白かったのに。
まあ、またそういうのがあったら引っ掛けてみてクレイ。
156nobodyさん
垢版 |
03/03/06 01:22ID:???
>>150
気持ちわりぃ〜・・・・(文法が)
157俺様
垢版 |
03/03/06 01:34ID:ZBXb+hSM
わからない点が出てきた(汗

$a ? $b : $c = 1;
これは$aがまだ初期化されていないため
falseとみなされて$cに1が代入される。
ところが、
$a=true;
$a ? $b : $c = 1;
このようにしても$bには1が代入されていなかった・・・

ちなみにPerlの場合はちゃんと$bに1が代入されてました。
というわけでどうしてPHPだと代入されないのかを考えて見ましょう。
PerlとPHPの違いですね。
158nobodyさん
垢版 |
03/03/06 01:36ID:???
俺様に、きもいストカー、スレ繁盛。   サラリーマン俳句
159nobodyさん
垢版 |
03/03/06 01:41ID:???
define("true",0);
160nobodyさん
垢版 |
03/03/06 01:42ID:???
さっき書いたもので十分。Perlは三項演算子(の2、3番目のやつ)が左辺値になれる。
なんと関数も左辺値にできる(ver 5.6辺り(?)以降から..)

my %hash;
sub hoge : lvalue {
my $key = shift;
return $hash{$key};
}

hoge('test') = 1;
print $hash{test};
161nobodyさん
垢版 |
03/03/06 01:43ID:???
>>157
あほか?
$a?$b:($c=1);と解釈するからだろ。つーかそれが健全。
162nobodyさん
垢版 |
03/03/06 01:52ID:???
ごめん。またもや失敗。

return を使ってはいけない。とのこと。

sub hoge : lvalue {
my $key = shift;
$hash{$key};
}
163nobodyさん
垢版 |
03/03/06 03:27ID:???
C(gcc 2.95.3-6 mingw)はperlと同じ挙動を示した。
こんな書き方があるとは、知らなかった。。
164nobodyさん
垢版 |
03/03/06 07:56ID:???
わからない点が出てきた(汗

$a ? $b : $c = 1;
これは$aがまだ初期化されていないため
falseとみなされて$cに1が代入される。
ところが、
$a=true;
$a ? $b : $c = 1;
このようにしても$bには1が代入されていなかった・・・

ちなみにPerlの場合はちゃんと$bに1が代入されてました。
というわけでどうしてPHPだと代入されないのかを考えて見ましょう。
PerlとPHPの違いですね。わからない点が出てきた(汗

$a ? $b : $c = 1;
これは$aがまだ初期化されていないため
falseとみなされて$cに1が代入される。
ところが、
$a=true;
$a ? $b : $c = 1;
このようにしても$bには1が代入されていなかった・・・

ちなみにPerlの場合はちゃんと$bに1が代入されてました。
というわけでどうしてPHPだと代入されないのかを考えて見ましょう。
PerlとPHPの違いですね。わからない点が出てきた(汗

$a ? $b : $c = 1;
これは$aがまだ初期化されていないため
165nobodyさん
垢版 |
03/03/06 07:56ID:???
わからない点が出てきた(汗

$a ? $b : $c = 1;
これは$aがまだ初期化されていないため
falseとみなされて$cに1が代入される。
ところが、
$a=true;
$a ? $b : $c = 1;
このようにしても$bには1が代入されていなかった・・・

ちなみにPerlの場合はちゃんと$bに1が代入されてました。
というわけでどうしてPHPだと代入されないのかを考えて見ましょう。
PerlとPHPの違いですね。わからない点が出てきた(汗

$a ? $b : $c = 1;
これは$aがまだ初期化されていないため
falseとみなされて$cに1が代入される。
ところが、
$a=true;
$a ? $b : $c = 1;
このようにしても$bには1が代入されていなかった・・・

ちなみにPerlの場合はちゃんと$bに1が代入されてました。
というわけでどうしてPHPだと代入されないのかを考えて見ましょう。
PerlとPHPの違いですね。
166nobodyさん
垢版 |
03/03/06 07:59ID:???
粘着きもいお(○´∞`○)
レスを投稿する


ニューススポーツなんでも実況