解析错误:语法错误,意外的“未设置”(T_UNSET)
Posted
技术标签:
【中文标题】解析错误:语法错误,意外的“未设置”(T_UNSET)【英文标题】:Parse error: syntax error, unexpected 'unset' (T_UNSET) 【发布时间】:2014-02-22 08:18:38 【问题描述】:我正在使用简单的 php unset() 函数来删除和索引数组,但它显示以下错误:
Parse error: syntax error, unexpected 'unset' (T_UNSET)
这是我的错误代码:
echo $totalArray = unset($linkExtHelp[0]);
提前致谢。
【问题讨论】:
【参考方案1】:试试这个,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]);
【讨论】:
Nit:unset
不是函数。 real [void] 函数会导致不同的错误。
我可以知道这段代码中的错误是什么:pastiebin.com/5d319d2506c52 我得到了同样的错误,比如(!)解析错误:语法错误,C:\wamp\ 中的意外'未设置'(T_UNSET) www\voice_bank\playlist_action.php 第 11 行【参考方案2】:
unset
不返回值 - 它不能有意义地用作表达式,即使这样的产生式被接受。
但是,解析错误是因为unset
is a keyword和一个“特殊产生”:即使unset
看起来像一个函数,它不是一个函数1。因此,unset
根据语言语法仅作为 语句2 有效。
制作可以在zend_language_parser.y:
309 unticked_statement:
| ..
338 | T_UNSET '(' unset_variables ')' ';'
1 语法是由于历史设计选择造成的,从一致性的角度来看可能是一个错误:
注意:因为[unset] 是一种语言结构而不是函数,所以不能使用变量函数调用它。
2 还有“(未设置)强制转换”,但我在这里忽略了。
【讨论】:
【参考方案3】:您不能指定“未设置”。我就是这样做的。 你需要做一个临时数组。
$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
希望对你有帮助。
【讨论】:
【参考方案4】:Unset 不返回任何内容,它是一个关键字。
我假设您想重新索引数组,您可以使用array_values
来执行此操作
试试这个:
unset($linkExtHelp[0]);
$totalArray = array_values($linkExtHelp);
【讨论】:
这增加了现有和已接受的答案所没有的什么? @JasonAller 现有答案将使数组缺少第一个值,我的答案重新索引(重新分配值的键)以上是关于解析错误:语法错误,意外的“未设置”(T_UNSET)的主要内容,如果未能解决你的问题,请参考以下文章
解析错误:意外的令牌,预期的“,”和语法错误:意外的令牌'['[重复]