【发布时间】:2012-04-12 19:50:26
【问题描述】:
真的很简单的问题,如何将未定义的变量传递给函数而不会出现 E_NOTICE 错误?
将未定义的变量传递给 isset() 等函数时,不会引发错误,但将其发送给您自己的函数,您会得到一个通知:未定义的偏移量:等。
我已经想到了今天想要这个的几个原因,但我当前的函数几乎是 isset 的克隆,除了它会检查是否设置了 any 的 args,而不是全部喜欢 isset( a,b,c) 会。
function anyset()
{
$argc = func_num_args();
$argv = func_get_args();
for ($i = 0; $i < $argc; $i++)
if (isset($argv[$i])) return true;
else return false;
}
现在,例如,我有一个巨大的 [x][y] 二维数组,其中的值将被随机放置。我需要检查随机坐标是否包含“旁边”的任何内容(x-1,y-1 到 x+1,y+1)等。
我不想循环 20,000,000 并初始化每个变量。我只想发送 9 个变量并检查是否已设置任何变量。
while (anyset($items[$x-1][$y-1],$items[$x][$y-1],$items[$x+1][$y-1],
$items[$x-1][$y],$items[$x][$y],$items[$x+1][$y],
$items[$x-1][$y+1],$items[$x][$y+1],$items[$x+1][$y+1]));
像这样。
我可以做 isset(x) || isset(x) || isset(x) 但这看起来不太好。
有没有办法让未定义的变量传递给我的函数而不会引发错误?
对采取简单的选择不感兴趣;)
感谢阅读!
\o
更新: 2012 年 4 月 12 日 21:03 看起来没有允许这种情况发生的特殊功能。因此,要么像 anyset(@$array[0], @$array[1]) 等一样通过,要么像这样将所有内容包装在一千个 issets 中:
while (isset($items[$x-1][$y-1]) || isset($items[$x][$y-1]) || isset($items[$x+1][$y-1]) ||
isset($items[$x-1][$y]) || isset($items[$x][$y]) || isset($items[$x+1][$y]) ||
isset($items[$x-1][$y+1]) || isset($items[$x][$y+1]) || isset($items[$x+1][$y+1]));
希望这对将来的其他人有所帮助!
【问题讨论】:
-
简单的想法,只是在错误引发函数之前添加错误中和器@?
$result = @youFunction()
标签: php