为啥我不能索引mysql返回的数组? [复制]
Posted
技术标签:
【中文标题】为啥我不能索引mysql返回的数组? [复制]【英文标题】:Why can't I index the mysql returned array? [duplicate]为什么我不能索引mysql返回的数组? [复制] 【发布时间】:2012-05-21 01:29:43 【问题描述】:可能重复:Access array returned by a function in php
代码:
$cnt = mysql_fetch_row(mysql_query("SELECT FOUND_ROWS()"))[0]
给出错误:
解析错误:语法错误,意外的'[' in 第 117 行的 index.php
同样适用于:
$cnt = (mysql_fetch_row(mysql_query("SELECT FOUND_ROWS()")))[0]
这段代码:
$cnt = mysql_fetch_row(mysql_query("SELECT FOUND_ROWS()"));
$cnt = $cnt[0];
工作正常。
这是怎么回事?
【问题讨论】:
这是 PHP 语法限制。只有 PHP 5.4 允许这样做。 @bfavaretto,有什么我可以读到的吗?还有其他类似的吗? 我找不到太多,但请查看:wiki.php.net/rfc/functionarraydereferencing 您可以使用$cnt = mysql_result(mysql_query("SELECT FOUND_ROWS()")),0)
或$cnt = current(mysql_fetch_row(mysql_query("SELECT FOUND_ROWS()")))
。
【参考方案1】:
这不仅仅是mysql_query
的问题--相反,它是PHP will fail,也是:
function get_array()
return array('foo', 'bar');
echo get_array()[0];
但是,正如您所观察到的,在尝试检索元素 works fine 之前设置结果:
$arr = get_array();
echo $arr[0];
【讨论】:
这很烦人 -.- 有什么原因吗? 对于很多 PHPism 来说,这是一个价值百万美元的问题 :^) @Walkerneo 不,不是。正如 bfavaretto 已经提到的,它已在 5.4 中修复。 PHP 有很多这样的怪事。 Array dereferencing @Walkerneo 我想如果你想了解更多信息,你必须继续挖掘,但the reason 声称这个补丁被拒绝了很长时间,因为“由于内存问题的不确定性,因为我们不喜欢内存泄漏。”以上是关于为啥我不能索引mysql返回的数组? [复制]的主要内容,如果未能解决你的问题,请参考以下文章