为什么我在下面的代码中只获取数组"row"中的第一行值。我需要与查询对应的所有值


$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;
}
}

我有一个查询,它返回表中的所有值和一个将其转换为 associasiate 数组的函数。但只获取数组中的第一行

因为你使用返回内部循环,它只接受第一个值并返回它。

$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;
}

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

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

由于在第一次迭代中遇到了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;
}

而不是在循环中写入返回,将该行替换为数组推送或数组移位函数。

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

把你的返回放在循环之外,这样它只返回第一个循环

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

你需要在循环外返回:

$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;
}

最新更新