非常に単純な質問ですが、E_NOTICEエラーなしで未定義の変数を関数に渡すにはどうすればよいですか?
isset()などの関数に未定義の変数を渡す場合、エラーは発生しませんが、同じものを独自の関数に送信すると、通知:未定義のオフセットなどが表示されます。
今日これが必要な理由をいくつか考えましたが、現在の関数は、isset(a、b、c)のようにすべてではなく、引数のいずれかが設定されているかどうかをチェックすることを除いて、ほとんどissetのクローンです。
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]の巨大な2次元配列があり、その中に値がランダムに配置されます。ランダム化された座標にその「隣」(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])などのように渡すか、次のようにすべてを1000の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]));
これが将来誰か他の人に役立つことを願っています!