var_dump(isset($GLOBALS['gl'])); } g2(); var_dump(isset($gl)); // no longer set echo "---------- unsetting inside a function (pass-by-ref) ------------\n"; function g3($p1, &$p2) { var_dump(isset($p1, $p2)); unset($p1, $p2); // unsets local "version" in current scope var_dump(isset($p1, $p2)); } $v1 = 10; $v2 = 20; g3($v1, $v2); var_dump(isset($v1)); // still set var_dump($v1); var_dump(isset($v2)); // still set, even though passed in by reference and unset var_dump($v2); echo "---------- unsetting inside a function (static) ------------\n"; function g4() { static $count = 0; ++$count; echo "count = {$count}\n"; var_dump(isset($count)); unset($count); // unsets local "version" in current scope
function circle($x, $y, $r, $z) { g0(_, _, SAFE_Z); g0($x, $y + $r, _); if (!is_array($z)) { $z = array($z); } foreach ($z as $zz) { g1(_, _, $zz); g3($x - $r, $y, _, 0, -$r, _); g3($x, $y - $r, _, $r, 0, _); g3($x + $r, $y, _, 0, $r, _); g3($x, $y + $r, _, -$r, 0, _); } g0(_, _, SAFE_Z); }
<?php function g3() { $arr2 = array(0, 1, 2, 3); $arr = $arr2; $b = true; $b2 = true; foreach ($arr as &$v) { (yield null); echo "val={$v}\n"; if ($b && $v == 1) { $b = false; $arr = array(4, 5, 6, 7); } else { if ($b2 && $v == 6) { $b2 = false; $arr = $arr2; } } } } foreach (g3() as $_) { }
<?php function g3() { $arr2 = array(0, 1, 2, 3); $arr = $arr2; $b = true; $b2 = true; foreach ($arr as &$v) { echo "val={$v}\n"; if ($b && $v == 1) { $b = false; $arr = array(4, 5, 6, 7); } else { if ($b2 && $v == 6) { $b2 = false; $arr = $arr2; } } } } g3();