解析错误:语法错误,意外的“未设置”(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)的主要内容,如果未能解决你的问题,请参考以下文章

解析错误:意外的令牌,预期的“,”和语法错误:意外的令牌'['[重复]

解析错误:语法错误,意外'[',期待')' [重复]

解析错误:语法错误,意外'' [关闭]

为啥这个解析错误在这里解析错误:语法错误,意外标识符“编辑”,期待“,”或“;”? [复制]

解析错误:语法错误,意外标记“:”

GraphQLError:语法错误:无法解析意外字符“;” [关闭]