为啥“isset($a[0]) 和 unset($a[0]);”导致语法错误?
Posted
技术标签:
【中文标题】为啥“isset($a[0]) 和 unset($a[0]);”导致语法错误?【英文标题】:Why does "isset($a[0]) and unset($a[0]);" cause syntax error?为什么“isset($a[0]) 和 unset($a[0]);”导致语法错误? 【发布时间】:2015-09-03 14:39:49 【问题描述】:我的代码:
$a = [];
isset($a[0]) and unset($a[0]);
它显示 "syntax error, unexpected 'unset' (T_UNSET)"
但是
$a = [];
isset($a[0]) and exit();
它有效!
exit()
和 unset()
都没有返回值。为什么一个有效,另一个无效?
【问题讨论】:
你能分享你的错误信息吗?exit
没有返回值,因为程序退出!
代码这么丑,你到底想干什么?
@AmbalMani '语法错误,意外'未设置' (T_UNSET)'
你应该阅读this ("How does php's unset work internally")
【参考方案1】:
unset
是一种语言结构,而不是真正的函数(这就是为什么你会得到 T_UNSET
而不是更通用的术语),因此它不会像普通函数那样按照相同的规则运行。 isset
和 exit
也是语言结构,但它们的行为更像普通函数。
【讨论】:
【参考方案2】:正如我在 cmets 中询问的那样,您说要从 Array 中删除一个值,
为什么不简单地写
$a = [];
if(isset($a[0]))
unset($a[0]);
// And exit() if you want to
【讨论】:
因为这是一种简单的书写和阅读方式……否则,将来编写您的代码的程序员会说您的坏话:P以上是关于为啥“isset($a[0]) 和 unset($a[0]);”导致语法错误?的主要内容,如果未能解决你的问题,请参考以下文章
为啥使用 glTranslatef?为啥不直接更改渲染坐标?
为啥 DataGridView 上的 DoubleBuffered 属性默认为 false,为啥它受到保护?