Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- /*
- * 配列をコピーすると内部ポインタがリセットされるテスト
- * TEST: Inner pointer of an array is reset when it is copied.
- *
- * foreach は最初に配列全体をメモリに展開するから、
- * while のが省メモリとかいう話を聞いた気がした。
- * そこで、while でループ回してたら無限ループにハマったのでメモ。
- * Because 'foreach' locate all of array on memory,
- * 'while' use lower memory.
- * I try to use 'while' but go into an infinite loop.
- */
- // 配列
- $arr = array('hoge', 'fuga', 'foo', 'bar');
- // コピー先配列
- $arr_cp = null;
- // 配列長
- $len = count($arr);
- // カウンタ
- $i = 0;
- while ((list($k, $v) = each($arr)) && $i < $len) {
- // 配列をコピーする
- $arr_cp = $arr;
- printf('%0d $k: %s, $v: %s'."\n", $i, $k, $v);
- $i++;
- }
- unset($k, $v);
- reset($arr);
- $i = 0;
- echo 'foreach'."\n";
- foreach ($arr as $k => $v) {
- // 配列をコピーする
- $arr_cp = $arr;
- printf('%0d $k: %s, $v: %s'."\n", $i, $k, $v);
- $i++;
- }
- ?>
Add Comment
Please, Sign In to add comment