gpt4 book ai didi

php - 如何在没有 E_NOTICE 错误的情况下将 undefined variable 传递给函数?

转载 作者:可可西里 更新时间:2023-10-31 22:44:10 26 4
gpt4 key购买 nike

这确实是一个非常简单的问题,我如何将 undefined variable 传递给函数而不会出现 E_NOTICE 错误?

当将 undefined variable 传递给诸如 isset() 之类的函数时,不会引发错误,但将其传递给您自己的函数时,您会得到一个 Notice: Undefined offset: etc.

今天我想到了几个想要这个的原因,但我当前的功能几乎是 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) 但这看起来不太好。

有没有办法允许 undefined variable 传递到我的函数而不引发错误?

对简单的选择不感兴趣 ;)

感谢阅读!

\o

更新:2012 年 4 月 12 日,21:03看起来没有允许这种情况发生的特殊功能。因此,要么像 anyset(@$array[0], @$array[1]) 等一样传递,要么像这样将所有内容包装在一千个 isset 中:

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]));

希望这对以后的其他人有帮助!

最佳答案

你有三个选择:

  • 使用isset妥善处理逻辑(isset($x) || isset($y) || isset($z))
  • 将所有内容包装在 isset() 中,然后让您的函数检查是否有任何论点为真(有点废话)
  • 使用 @ 来抑制错误(也是 bleh)

@ 的一个例子是:

function a($a) { } a(@$x);

您应该记住,尽管存在通知是有原因的。我避免错误抑制。这对我来说似乎很老套。我会正确地将所有内容包装在 isset() 中。它更冗长,但无论如何,在我看来,它更正确。

关于php - 如何在没有 E_NOTICE 错误的情况下将 undefined variable 传递给函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10130715/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com