2

我有一个问题,想了解在本示例中的 while 循环中使用 *array_shift* 和 fetchAll 是如何工作的?预期的结果只是从数据库中获取数据并将其用于填写 CRUD 应用程序。

我了解 *array_shift* 会丢弃数组的第一个结果,但不确定为什么这不会影响本示例中返回的结果。只是想了解一下这个过程。

$pdo = Database::connect();
$sql = $pdo->prepare("SELECT * FROM contacts ORDER BY name ASC");
$sql->execute();
$result = $sql->fetchAll(PDO::FETCH_ASSOC);

$contacts = array();
while ($obj = array_shift($result)) {
    $contacts[] = $obj;
}
return $contacts;
4

1 回答 1

1

array_shift将从数组中删除第一个元素并返回它。所以如果你有一个像

array("one", "two", "three")

Usingarray_shift将返回"one",源数组将更新为array("two", "three"). 在循环中完成时,这意味着最终源数组将被修剪为array().

根据文档array_shift返回一个空数组NULL。您可以将代码视为正在运行:

if ($obj = NULL)

这是虚假的,因此不会评估该语句(while在您的情况下)。

于 2014-01-02T20:03:40.407 回答