[表示 : 全て 最新50 1-99 101- 2chのread.cgiへ]
Update time : 10/31 11:37 / Filesize : 45 KB / Number-of Response : 185
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

さまざまな言語仕様について熱く語る闘技場



1 名前:nobodyさん mailto:sage [2008/12/08(月) 13:15:56 ID:???]
ROUND 1開始!

158 名前:nobodyさん mailto:sage [2009/01/02(金) 16:53:02 ID:???]

  ,j;;;;;j,. ---一、 `  ―--‐、_ l;;;;;;
 {;;;;;;ゝ T辷iフ i    f'辷jァ  !i;;;;;   
  ヾ;;;ハ    ノ       .::!lリ;;r゙    在日の方々はかわいそうな強制連行の被害者
   `Z;i   〈.,_..,.      ノ;;;;;;;;>     
   ,;ぇハ、 、_,.ー-、_',.    ,f゙: Y;;f      そんなふうに考えていた時期が
   〜''戈ヽ   `二´    r'´:::. `!    俺にもありました

159 名前:nobodyさん mailto:sage [2009/01/11(日) 18:25:25 ID:???]
最近、個人的に面白いと思った言語仕様があるのだが、ここに書いてる時間が
ないし、書いても長くてウザがられそうなので、クイズにしてみる。

「PHP言語仕様・力試しクイズ」

$ php -r '$a=array(); $a["a"]= $a; var_dump($a);'
$ php -r '$a=array(); $a["a"]=&$a; var_dump($a);'

$ php -r '$a=new stdClass; $a->a= $a; var_dump($a);'
$ php -r '$a=new stdClass; $a->a=&$a; var_dump($a);'

(以下は PHP5(以上)でしか動かない)
$ php -r '$a=new stdClass; $a->a= clone $a; var_dump($a);'
$ php -r '$a=new ArrayObject(array()); $a["a"]= $a; var_dump($a);'
$ php -r '$a=new ArrayObject(array()); $a["a"]=&$a; var_dump($a);'
$ php -r '$a=new ArrayObject(array()); $a["a"]= clone $a; var_dump($a);'

Q1
これらのコードが、PHP4とPHP5で、それぞれどのような表示をするか、試して
みよう。自信のある人は試す前に予想してみよう。

Q2
>>144のリンク先の記事 www.phppro.jp/news/304 が正しいかどうか、
問題があるとしたらどこか、考えてみよう。


160 名前:nobodyさん mailto:sage [2009/01/14(水) 17:15:05 ID:???]
>>153
作者乙

161 名前:nobodyさん mailto:sage [2009/01/14(水) 18:06:09 ID:???]
大垣センセがこんなとこくるわけないだろw

162 名前:nobodyさん mailto:sage [2009/01/14(水) 18:38:30 ID:???]
>>161
おお、やっと大垣さんの名前を知っている人が来たか。

よかったら>>159の問題を見てってくれ。
誰にもやってもらえなくてさびしい。

163 名前:nobodyさん mailto:sage [2009/01/14(水) 18:53:26 ID:???]
つうか、PHPのリファレンスって、要するにインスタンスに別名をつけることで、
仕組み自体はきわめて単純なものなんだよな。他言語で一般に言われるリファ
レンスと似ても似つかないだけで(俺だったら「エイリアス」とか命名したと
思う)。

わかりにくいのは、なんでPHPはこんな、他言語にはない奇妙な仕組みを必要と
するかだ。PHPのリファレンスはいつ、どのようなときに必要なのか。それを理
解するには、PHPの変数と各種インスタンスの挙動を理解する必要がある。

>>159のクイズは、まさにその辺の問題を扱っている。まあちょっと再帰を絡ま
せてしまったんで分かりにくくなってしまったが、再帰は枝葉で、本題にした
いのはそっちだ。


164 名前:nobodyさん mailto:sage [2009/01/14(水) 18:59:55 ID:???]
>>162
その問題、最初に出現したときに解いて、全問正解だったよ。
でもそんなこと書いたって意味ないから書かなかっただけ。
いろんなところにコピペしなくていいよ。

165 名前:nobodyさん mailto:sage [2009/01/14(水) 19:05:36 ID:???]
参照でおもしろいのは、引数を参照で受け取る関数で、
それがオブジェクトであることを期待してるのに、NULLだった場合とかに、
関数の中で何もしないのに、var_dumpすると再帰になるようなスクリプトで
別のメモリ領域にズレが生じるとか。

166 名前:nobodyさん mailto:sage [2009/01/14(水) 19:09:11 ID:???]
>>164
ちょっと待て。これどこかにコピペされてんの?
俺はここと、くだ質スレ79にしか書き込んでないぞ。

まあそんなことはどうでもいいか。
全問正解とはすごいな。俺自身、Q1の最後から2番目は、自分でも動かしてみな
いと分からんかった。

どうやって勉強した?PHPマニュアルだけでは>>159は分からんと思うが。
参考にさせてほしい。

あとQ2の答えを、手短でいいから書いてみてくれないか?




167 名前:nobodyさん mailto:sage [2009/01/14(水) 19:13:09 ID:???]
君見苦しいぞ

168 名前:nobodyさん mailto:sage [2009/01/14(水) 19:13:20 ID:???]
>>165
> 関数の中で何もしないのに、var_dumpすると再帰になるようなスクリプトで

すまんがここの意味が分からん。
なんかコードの実例で示してもらえんか?

169 名前:nobodyさん mailto:sage [2009/01/14(水) 19:17:29 ID:???]
>>167
意味不明。


170 名前:nobodyさん mailto:sage [2009/01/14(水) 19:42:19 ID:???]
>>166
参照代入を行った場合のrefcountが違う

171 名前:nobodyさん mailto:sage [2009/01/14(水) 22:04:23 ID:???]
見苦しい人がちょっといたほうが盛り上がるよ

172 名前:nobodyさん mailto:sage [2009/01/14(水) 22:17:55 ID:???]
盛り下がっちゃったわけだが

173 名前:nobodyさん mailto:sage [2009/01/17(土) 07:18:25 ID:???]
>>159
Q2の答えまだ〜?

174 名前:nobodyさん mailto:あげ [2009/02/08(日) 20:48:24 ID:???]
緊急浮上あげ

175 名前:nobodyさん mailto:sage [2009/02/09(月) 02:15:47 ID:???]
俺も大垣先生の本は分かりやすいと思った。
PHP6が出たら、改訂版の投入をお願いします!><
図書館で借りて読むけどw

176 名前:nobodyさん mailto:sage [2009/02/09(月) 11:41:42 ID:???]
本人乙



177 名前:nobodyさん mailto:age [2009/02/09(月) 14:13:32 ID:???]
echo と print の厳密な違いを教えてください

178 名前:nobodyさん mailto:sage [2009/02/09(月) 14:46:33 ID:???]
void zend_do_print(znode *result, znode *arg TSRMLS_DC)
{
zend_op *opline = get_next_op(CG(active_op_array) TSRMLS_CC);

opline->result.op_type = IS_TMP_VAR;
opline->result.u.var = get_temporary_variable(CG(active_op_array));
opline->opcode = ZEND_PRINT;
opline->op1 = *arg;
SET_UNUSED(opline->op2);
*result = opline->result;
}


void zend_do_echo(znode *arg TSRMLS_DC)
{
zend_op *opline = get_next_op(CG(active_op_array) TSRMLS_CC);

opline->opcode = ZEND_ECHO;
opline->op1 = *arg;
SET_UNUSED(opline->op2);
}

179 名前:nobodyさん mailto:sage [2009/02/09(月) 20:41:25 ID:???]
>>177
echo は、(カンマ)で区切って、連続で引数をぶちこめる。
printはできない。

180 名前:nobodyさん mailto:sage [2009/02/09(月) 20:49:46 ID:???]
そうなるとprintなんて必要ないよな
配布スクリプトなんか覗くとprint使ってるやつがいるので不思議でたまらない

181 名前:nobodyさん mailto:sage [2009/02/09(月) 21:10:42 ID:???]
printは成功すると1を返す。
echoは何も返さない。

182 名前:nobodyさん mailto:sage [2009/02/09(月) 23:30:44 ID:???]
$a=1;

$a ? echo 'aaa' : echo 'bbb'; //error
$a ? print 'aaa' : print 'bbb'; //ok

183 名前:nobodyさん mailto:sage [2009/02/10(火) 05:47:16 ID:???]
三項演算子の場合普通式の先頭から書かないか?

184 名前:nobodyさん mailto:sage [2009/02/10(火) 06:33:49 ID:???]
一例ってことで






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](*・∀・)<45KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef