为什么我仅在下面的代码中获得数组“行”中的第一行值。我需要与查询相对应的所有值

问题描述 投票:0回答:5
  $s = $conn->prepare($q);
  $s->execute([$tagIdValue]);
  $d = $s->fetchAll();
  return $d;

function x($d) {
    foreach ($d as $row) {
      $val = $row["id"];
      $cont = trimContent($row);
      return $row;
    }
  }

i有一个查询,该查询返回表中的所有值以及一个将其转换为关联数组的函数。但是只获取数组的第一行

php for-loop return echo
5个回答
1
投票

因为您使用循环内的return,所以它只取第一个值并将其返回。

  $s = $conn->prepare($q);
  $s->execute([$tagIdValue]);
  $d = $s->fetchAll();
  return $d;

function x($d) {
    $arr =[]
    foreach ($d as $row) {
      $val = $row["id"];
      $cont = trimContent($row);
      array_push($arr, $val)
    }
   return $arr;
  }

1
投票

将您的返回值置于循环之外,因此只有它会返回第一个循环

function x($d) {
   foreach ($d as $row) {
     $val = $row["id"];
     $cont = trimContent($row);
     return $row;
}
}

0
投票

因为,您正在循环中返回结果集。

因此,仅第一行从循环中返回。

因为,在第一次迭代中,遇到了return语句,因此该函数将返回并且控制权将退出该函数。

并且下一次迭代不会遍历结果集。

我们需要在循环前创建一个数组,

将结果追加到该数组

并返回数组。

更正的代码:

$s = $conn->prepare($q);
  $s->execute([$tagIdValue]);
  $d = $s->fetchAll();
  return $d;

function x($d) {
 $array = array();
    foreach ($d as $row) {
      $val = $row["id"];
      $cont = trimContent($row);
       $array[] = $row;
    }
 return $array;
}

0
投票

而不是在循环内编写返回,而是使用数组推入或数组移位功能替换该行。

循环结束后,返回从array_push / array_shift获得的最终结果。


-1
投票

您需要返回循环之外:

$s = $conn->prepare($q);
$s->execute([$tagIdValue]);
$d = $s->fetchAll();
return $d;

function x($d) {
  $arr =array();
  foreach ($d as $k=> $row) {
    $val = $row["id"];
    $cont = trimContent($row);
    $arr[$k] = $row;
  }
  return $arr;
}

0
投票

因为,您正在循环中返回结果集。

因此,仅第一行从循环中返回。

因为,在第一次迭代中,遇到了return语句,因此该函数将返回并且控制权将退出该函数。

并且下一次迭代不会遍历结果集。

我们需要在循环前创建一个数组,

将结果追加到该数组

并返回数组。

更正的代码:

$s = $conn->prepare($q);
  $s->execute([$tagIdValue]);
  $d = $s->fetchAll();
  return $d;

function x($d) {
 $array = array();
    foreach ($d as $row) {
      $val = $row["id"];
      $cont = trimContent($row);
       $array[] = $row;
    }
 return $array;
}

0
投票

而不是在循环内编写返回,而是使用数组推入或数组移位功能替换该行。

循环结束后,返回从array_push / array_shift获得的最终结果。

© www.soinside.com 2019 - 2024. All rights reserved.