目前我正在使用这个PHP函数:
function if_exist(&$argument, $default = '')
{
if (isset ($argument))
{
echo $argument;
}
else
{
echo $default;
}
}
我希望这个函数在输出$argument(传引用)和$default的值后将其取消设置,我该怎么做?
提前致谢。目前我正在使用这个PHP函数:
function if_exist(&$argument, $default = '')
{
if (isset ($argument))
{
echo $argument;
}
else
{
echo $default;
}
}
我希望这个函数在输出$argument(传引用)和$default的值后将其取消设置,我该怎么做?
提前致谢。$default
是按值传递的,因此它不能被取消设置(除非在本地范围内)。
正如你无疑发现的那样,unset()
只是取消对 $argument
的引用。你可以通过以下方式(有点)取消设置 $argument
:
$argument = null;
isset()
无论哪种方式都会得到相同的结果。但我猜这样就足够了,因为你无论如何都不能通过调用unset()
来实现相同的效果。 - BoltClockif_exists()
后 $select 是否未设置。您应该添加一行代码,如 if isset( $select) { // 做某事 }
。 - George Cummins使用函数实现此操作的唯一方法是使用全局变量。
//To unset() a global variable inside of a function,
// then use the $GLOBALS array to do so:
<?php
function foo()
{
unset($GLOBALS['bar']);
}
$bar = "something";
foo();
?>
$arr = [
'a' => 1,
'b' => ['c' => 3],
];
function del($key, &$arr) {
$key = explode('.', $key);
$end = array_pop($key);
foreach ($key as $k) {
if (is_array($arr[$k]) {
$arr = &$arr[$k];
} else {
return; // Error - invalid key -- doing nothing
}
}
unset($arr[$end]);
}
del('b.c', $arr); // $arr = ['a' => 1, 'b' => []]
del('b', $arr); // $arr = ['a' => 1]
$argument = '';
),然后不是检查它是否被设置,而是检查它是否为空,这也是一种方法。当然,这取决于空字符串是否是一个有效的值。 - Richard Marskell - Drackir