我需要得到这个结果
return [
[$row_0['Наименование'], $row_0['Ассортимент'], $row_0['Сумма']],
[$row_1['Наименование'], $row_1['Ассортимент'], $row_1['Сумма']],
[$row_2['Наименование'], $row_2['Ассортимент'], $row_2['Сумма']],
];
通过使用此循环来解析数据库数据
for ($i = 0; $i < $num_rows; $i++) {
$row = $adb->query_result_rowdata($accountQuery, $i);
[$row['Наименование'], $row['Ассортимент'], $row['Сумма']],
}
此代码有语法错误
return [
for ($i = 0; $i < $num_rows; $i++) {
$row = $adb->query_result_rowdata($accountQuery, $i);
[$row['Наименование'], $row['Ассортимент'], $row['Сумма']],
}
];
如何编写循环以在return语句中获得上述结果?
答案 0 :(得分:5)
在return
语句中不能有控制结构。
首先遍历数据,将其附加到数组,然后返回。
$result = array();
for ($i = 0; $i < $num_rows; $i++) {
$row = $adb->query_result_rowdata($accountQuery, $i);
$result[] = [$row['Наименование'], $row['Ассортимент'], $row['Сумма']];
}
return $result;
答案 1 :(得分:1)
如果您真的真的需要完整的结果数组,那么其他人已经提供了您想要的答案。
如果您只想遍历数组一次,则使用yield
keyword(生成器语法)可能会为您提供另一个易于阅读的解决方案:
for ($i = 0; $i < $num_rows; $i++) {
$row = $adb->query_result_rowdata($accountQuery, $i);
yield [$row['Наименование'], $row['Ассортимент'], $row['Сумма']];
}
请注意与您发布的第二段代码相似。
如果调用$adb->query_result_rowdata(...)
需要打开数据库连接(或其他一些可关闭的资源),则只有在您决定不再迭代生成的生成器时,才能关闭该连接。关闭连接后,从生成器中检索新值将返回错误。
答案 2 :(得分:0)
只需在return语句和return数组之前做所有事情,像这样:
$result = [];
for ($i = 0; $i < $num_rows; $i++) {
$row = $adb->query_result_rowdata($accountQuery, $i);
$result[] = [$row['Наименование'], $row['Ассортимент'], $row['Сумма']];
}
return $result;