導入のきっかけ
なので、=
が関数なら、何をreturnしてるか調べようってお話
書いたプログラム
$a = 0; var_dump($a); var_dump($b); var_dump($a = $b); var_dump($a); var_dump($b); var_dump($a = $a); var_dump($a = $b = $c);
実行結果
php -a
使って確認。php7.0です。
見にくいので改行入れました。
php > $a = 0; php > var_dump($a); int(0) php > var_dump($a = $b); PHP Notice: Undefined variable: b in php shell code on line 1 Notice: Undefined variable: b in php shell code on line 1 NULL php > var_dump($a); NULL php > var_dump($b); PHP Notice: Undefined variable: b in php shell code on line 1 Notice: Undefined variable: b in php shell code on line 1 NULL php > $a = $b; PHP Notice: Undefined variable: b in php shell code on line 1 Notice: Undefined variable: b in php shell code on line 1 php > var_dump($a = $a); NULL php > var_dump($a = $b = $c); PHP Notice: Undefined variable: c in php shell code on line 1 Notice: Undefined variable: c in php shell code on line 1 NULL
それぞれの原因を予想しよう
代入。
php > $a = 0; php > var_dump($a); int(0)
$a
に代入。echoしてないので返り値は見れないです。
ということで、これは標準出力に吐き出しているわけではない模様。
var_dump
は引数の型や値を出力してくれる便利関数。今の$a
はint型で0みたいですね。
=
の出力
php > var_dump($a = $b); PHP Notice: Undefined variable: b in php shell code on line 1 Notice: Undefined variable: b in php shell code on line 1 NULL php > var_dump($a); NULL php > var_dump($b); PHP Notice: Undefined variable: b in php shell code on line 1 Notice: Undefined variable: b in php shell code on line 1 NULL
var_dump($a = $b)
とvar_dump($a)
とvar_dump($b)
を比較すると、
var_dump($a = $b)のまえに$bを読み込んで PHP Notice: Undefined variable: b in php shell code on line 1 Notice: Undefined variable: b in php shell code on line 1 を出し、その後、 $aを出力した
と予測されますが・・・その前に、$a = $b
で$bがエラーを吐かずに$bだけ出力した可能性が残されてます。
代入単体でテスト
php > $a = $b; PHP Notice: Undefined variable: b in php shell code on line 1 Notice: Undefined variable: b in php shell code on line 1 php > var_dump($a = $a); NULL
あ、$a = $b
でエラー出してますね。これは仮定が正しそう。
そして、var_dump($a = $a)
すると、$a = $a
がちゃんと値をreturnしてるっぽいですね。
3つ繋いだ場合は?
php > var_dump($a = $b = $c); PHP Notice: Undefined variable: c in php shell code on line 1 Notice: Undefined variable: c in php shell code on line 1 NULL
- $c→エラー
- $bにNULL代入、$bを出力
- 出力された$b(NULL)を$aに代入
- $aを出力→NULL
って感じで私は$a = $b
は$a
を出力したと予想しました!
結論:何事も試してみる大切。
頭で考えていただけだと、$aと$bのどちらを出力するのかわからなかったので、
コードを書いて試してみるとか、ドキュメント読むとか、元のソースコードを追うとか大切。
日記
100日目まであと3日!
100日目に書く記事何も考えてない!!!
とりあえず、少しずつ勉強する生活が安定してきました!
ブラックの会社の人より、自由時間使って勉強しないと置いていかれるって聞いて、
なるほどって思ったし、実際周りの友人残業やばい人いくらでも思い浮かぶし、
頑張って勉強して自分の成長に投資しないといけないですね。
頑張れ私ー!
今日の作業時間
30分+これからもう少しやります
今日の運動
エアロバイク1.5km+これからもう少しやります