首页 > 解决方案 > 有没有理由用自己的元素之一覆盖数组变量?

问题描述

我最近“继承”了一个 PHP Web 应用程序,它使用 mySQL 数据库作为其后端的一部分。在浏览代码时,我遇到了一个让我非常困惑的块。

$results = array();
$results[] = $mysqli_result->fetch_array();
$results = $results[0];

return $results;

所以我知道前两行正在初始化一个空数组并将前一个查询的第一行结果分配给该新数组。但是第三行对我来说没有意义。据我了解,fetch_array()一次只能抓取一排;我想不出有什么理由要$results = $results[0];排队。我能想到的最好的办法是它是mysql_result被删除时的剩余代码。

有什么理由有这个第三行吗?

标签: phpmysqlmysqli

解决方案


不,没有理由。这只是“货物崇拜代码”的一个例子。当您不知道如何正确地做某事时,您只需复制/粘贴一些现有代码,而无需真正了解是否有必要。

当然,创建一个数组,然后在这个数组中创建一个新元素,然后用第一个元素重新分配这个数组变量是没有意义的。相反,只需分配一个变量:

$result = $mysqli_result->fetch_array();

或者 - 更好 - 因为这个变量是在赋值后立即返回的,所以只需立即返回它,因为该$result变量不会在其他任何地方使用。

return $mysqli_result->fetch_array();

推荐阅读