pagetaka

写真、PC、ネット、岡山、旅の話題をお届けします

PHP:配列・配列内の値、どこまで有効。フォーカス範囲を再確認

PHPでイロイロやろうとしてつまずいている爺です。本当は、ひとつのことをやりたくて、それが、うまくいってないという…。DOMなっているんだ…いえ、ドウなっているんだ…などと、寒いダジャレを…作業対象に掛けたツモリ…。

昨日は、散歩以外ほとんど家にいて、PHPスクリプトを書こうとPCの前にいたです。
これは、実際に作業進捗がはかられた、ということを意味しません(キッパリ)。ええ、良い考えが浮かばない、とか書いてますが、要はスキルが足りんのであります…シクシク。

配列のキーの扱い方で、凡ミス

まずは、例示のPHPスクリプト、画像で。
f:id:PageTAKA:20150706084532j:plain

  • $is 配列で値はarrayカッコの中で設定
  • foreach $is配列の「配列内キー」として「$key」、$isは「配列内」有効な変数として$isの個々の値を受け取る
  • foreachのソト、つまり終わったあとも、$iは最後の値「6」が残っている
  • $isは、foreach内でつくった配列ではないので、[5]のように添え字を入れると、foreach外でも範囲内の添え字であれば、値を表示する。範囲外であれば「Undefined offset N」と表示してくれる
  • unsetしたあとの $i は、「undefined variable i」と表示され、無効な変数であることがわかる

$key、最後の値が残るみたい

ちなみに、 $key もforeach外になっても、最後の値が残ってました。unset($key) すると、消滅…。

<?php
$is = array(0,1,2,3,4,5,6);
foreach($is as $key=>$i){
	echo $i." i <br />";
	echo $is[$key]." is <br />";
}
echo "==========<br />";
echo $i." i-out of foreach <br />";
echo $is[5]." is-out of foreach:$is[5] <br />";
echo $is[7]." is-out of range,foreach <br />";
echo $key."<br />";
unset($i);
echo $i." i-after-unset <br />";
unset($key);
echo $key."<br />";
?>

上のスクリプト、適当な名前でphpファイルとして保存すると、稼働環境があれば動くです(おそらく)。