ど素人から毛を生やす。<延>

PHPの開発エディタは必ず空白が可視化できるものを使おうと誓った話。

Web > PHP 2017年8月30日(最終更新:5年前)

2017年8月30日に作成されたページです。
情報が古かったり、僕が今以上のど素人だった頃の記事だったりする可能性があります。

どもです。
今回はちょっと吃驚したトラブルの話。

本来、やりたかったことはとてーもシンプル。


foreach($array as $key => $value){
	switch($key){
		case:'電話番号1':
			$tel = $value;
			$storage[] = $tel;
			break;
		case:'電話番号2':
			$tel = $value;
			$storage[] = $tel;
			break;
	}
}

実際は$telに値を入れてから色々処理して最終的な$storage[]に入れるわけですが。

重要なのはループの中で、複数回、処理用の変数$telに新しい値を入れて使用していること。
勿論、この行為自体には何も問題がありません。

が、このたび電話番号2の$telが、電話番号1の$telを引き継いでしまう事件が発生しました。

どーいうこっちゃと頭抱えながらエディタを睨み付けたところ…


foreach($array␣as␣$key␣=>␣$value){
^	switch($key){
^	^	case:'電話番号1':
^	^	^	$tel␣=␣$value;
^	^	^	$storage[]␣=␣$tel;
^	^	^	break;
^	^	case:'電話番号2':
^	^	^	$tel□=␣$value;
^	^	^	$storage[]␣=␣$tel;
^	^	^	break;
^	}
}

うそだろバーニィ…

これエラーになんねーのかよ…

そういえば、PHPって変数名を全角にできるんだった…

つまり、変数【$tel】ではなく、変数【$tel 】として登録されてしまったと。
電話番号2の処理で変数【$tel】呼び出せば、必ず電話番号1が先に処理されるのであれば、
電話番号1の変数【$tel】が継承されることになる。

文字間隔を均等にするタイプのエディタなら一発でわかる問題だが、
Pタイプのフォントだとこれは真面目に気付かない。

PHPの開発エディタは必ず空白が可視化できるものを使おう。ほんとマジで。

自分がやらかさなくても、他人のやらかしに巻き込まれることは稀によくある。(切実)

この記事は役に立ちましたか?
  • (・∀・) 参考になった (0)
  • (`・ω・´) 役に立った (0)
  • _(:3」∠)_ 面白かった (1)