【发布时间】:2014-02-22 08:18:38
【问题描述】:
我正在使用简单的 php unset() 函数来删除和索引数组,但它显示以下错误:
Parse error: syntax error, unexpected 'unset' (T_UNSET)
这是我的错误代码:
echo $totalArray = unset($linkExtHelp[0]);
提前致谢。
【问题讨论】:
我正在使用简单的 php unset() 函数来删除和索引数组,但它显示以下错误:
Parse error: syntax error, unexpected 'unset' (T_UNSET)
这是我的错误代码:
echo $totalArray = unset($linkExtHelp[0]);
提前致谢。
【问题讨论】:
试试这个,unset($linkExtHelp[0]) 分配给变量echo $totalArray = 的原因
您不能将unset() 值分配给变量,您可以使用在取消设置之前和取消设置之后进行检查,如下所示。换句话说,unset 没有任何返回值,因为unset 是一个空值。 Void - 不向其调用者提供结果值。
语法: void unset (mixed $var [, mixed $...])
echo "Before unset: ".$linkExtHelp[0];
unset($linkExtHelp[0]);
$linkExtHelp = array_values($linkExtHelp);
echo "After unset: ".$linkExtHelp[0];
而不是
echo $totalArray = unset($linkExtHelp[0]);
【讨论】:
unset 不是函数。 real [void] 函数会导致不同的错误。
unset 不返回值 - 它不能有意义地用作表达式,即使这样的产生式被接受。
但是,解析错误是因为unset is a keyword和一个“特殊产生”:即使unset看起来像一个函数,它不是一个函数1。因此,unset 根据语言语法仅作为 语句2 有效。
制作可以在zend_language_parser.y:
309 unticked_statement:
| ..
338 | T_UNSET '(' unset_variables ')' ';'
1 语法是由于历史设计选择造成的,从一致性的角度来看可能是一个错误:
注意:因为[unset] 是一种语言结构而不是函数,所以不能使用变量函数调用它。
2 还有“(未设置)强制转换”,但我在这里忽略了。
【讨论】:
您不能指定“未设置”。我就是这样做的。 你需要做一个临时数组。
$totalArray = $linkExtHelp; // assign it to a new array (so you can keep the original one )
foreach ($totalArray as $key => $value) {
unset($totalArray [$key]['save_day']); // if you need to remove all of 'save_day' value from multi array
}
var_dump($totalArray); // after unset
var_dump($linkExtHelp); // the original array
//echo $totalArray = unset($linkExtHelp[0]); // This is wrong. no echo
希望对你有帮助。
【讨论】:
我假设您想重新索引数组,您可以使用array_values 来执行此操作
试试这个:
unset($linkExtHelp[0]);
$totalArray = array_values($linkExtHelp);
【讨论】: