foreach 循环仅输出数组中的最后一个元素

Posted

技术标签:

【中文标题】foreach 循环仅输出数组中的最后一个元素【英文标题】:foreach loop only outputs the last element from array 【发布时间】:2019-10-22 07:00:31 【问题描述】:

我做了一个选择语句,它有多个输出。

但是当我尝试返回时,它只会返回最后一个。 这是我的代码...

$stmt->execute();
$row = $stmt->fetchAll();

$result = [];

foreach ($row as $fullName => $type) 
    $result['fullName'] = $type['name'] . ' ' .$type['lastname'];
    $result['class_type'] = $type['typ'];

    var_dump($result['fullName']);


return $result;

我的 var-dump 返回 4 个结果,但我的 return 只返回 var dump 的最后一个结果。

我在这里做错了什么?

【问题讨论】:

【参考方案1】:

您正在重写代码中的值。您需要将每个结果推送到数组。请参阅下面的代码以供参考。

$stmt->execute();
$row = $stmt->fetchAll();

$result = [ ];

foreach ($row as $fullName => $type) 
    $result[] = [
    'fullName' => $type['name'] . ' ' .$type['lastname'],
    'class_type' => $type['typ'] ];

   // var_dump($result['fullName']);


return $result;

【讨论】:

【参考方案2】:

如果您正确构建查询,则不需要foreach

SELECT CONCAT(name, " ", lastname) AS fullName, typ AS class_type FROM table_name

然后只需获取所有行并返回它们:

$stmt->execute();
return $stmt->fetchAll(PDO::FETCH_ASSOC);

【讨论】:

嘿,我确实尝试过类似SELECT profile`.rolle, ( `profile`.`name` , " " , `profile`.nachname ) AS full_name, 但它返回的操作数应该包含 1 列

以上是关于foreach 循环仅输出数组中的最后一个元素的主要内容,如果未能解决你的问题,请参考以下文章

foreach 循环重复数组中的最后一项

php foreach输出数组只输出元素的第一个字符

动态数组分配仅返回所有索引中的最后一个元素 C

在 PHP 中使用 foreach 循环时查找数组的最后一个元素

有关Java里面foreach的问题,我是小白,各位高手告诉下,谢谢

foreach 循环内的 while 循环仅返回 1 行