php 初心者がはまる var_dump と print_r


スポンサーリンク

php 初心者がはまる関数に var_dump と print_rがあると思います。

サンプルを探していると必ずぶつかるこの2つの関数は、配列に関係しています。
要するにこの2つの関数は、配列内容を出力してくれる関数です。

まだ、よちよち歩きの php プログラマにとってとても敷居の高い関数。
というよりも、それはわかったから、どうすればいいんだ?って話。

配列の取り扱いは以下の通り。

配列へ値を push
$ary[]=’1′;
あるいは
$ary[‘fieldname’]=’1′; // 連想配列

配列の中身を取り出す
$a = $ary[0];
あるいは
$a = $ary[‘fieldname’]

php の場合、通常の配列も連想配列も取扱は一緒です。

連続して出力する

foreach($ary as $var){
// $var に値が取り出される
}

foreach($ary as $k=>$var){
// $k に連想配列のキー
// $var に値がとりだされる
}

例えば、ファイルに出力するなら
$file = WP_PLUGIN_DIR."/".$myfolder."/snap.txt";
$sw = 'a+';
$fp = fopen($file, $sw);
foreach($ary as $k =>$var ){
fwrite($fp, 'key='.$k.' var='.$var."\n");
}
fclose($fp);


初期代入の場合は、以下の用意記述できる(サンプルの多くはこういった書き方してるから逆になじみ深いと思うけど)
$ary = array{1,2,3,4,5};


何かの関数を実行すると得体のしれない、配列の中に配列がはいっているというパターンがある。
これが死ぬんだ(笑)

その場合こういった書き方をすれば抜け道見つかるかな?
foreach($ary as $k =>$var ){
if(is_array($var)){
array_loop($fp,$var);
}else{
fwrite($fp, 'key='.$k.' var='.$var."\n");
}
}
function array_loop($fp,$ary){
foreach($ary as $k =>$var ){
if(is_array($var)){
array_loop($fp,$var);
}else{
fwrite($fp, 'key='.$k.' var='.$var."\n");
}
}
}


再起呼出しで配列じゃなくなるまで繰り返す。

スナップショットをかけるときに活用できるかも。

ちなみにスナップショットの主力先は、パーミッションに気を付けて。
php は、パーミッション書き換えられない言語なので。


スポンサーリンク