【问题标题】: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()")))

标签: php mysql sql arrays variables


【解决方案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 有很多这样的怪事。
  • @Walkerneo 我想如果你想了解更多信息,你必须继续挖掘,但the reason 声称这个补丁被拒绝了很长时间,因为“由于内存问题的不确定性,因为我们不喜欢内存泄漏。”
猜你喜欢
  • 1970-01-01
  • 2014-12-02
  • 1970-01-01
  • 2017-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多