在while循环上使用array_shift,使用来自mysql的SELECT *上的fetchAll()

时间:2014-01-02 19:05:16

标签: arrays while-loop fetchall

我有一个问题,理解在这个例子中,在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;

1 个答案:

答案 0 :(得分:1)

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

这样的数组
array("one", "two", "three")

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

According to the documentationarray_shift在空数组上返回NULL。您可以将代码视为正在运行:

if ($obj = NULL)

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