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