Php 如何在return语句中编写循环?

Php 如何在return语句中编写循环?,php,Php,我需要得到这个结果 return [ [$row_0['Наименование'], $row_0['Ассортимент'], $row_0['Сумма']], [$row_1['Наименование'], $row_1['Ассортимент'], $row_1['Сумма']], [$row_2['Наименование'], $row_2['Ассортимент'], $row_2['Сумма']], ]; 通过使用此循环解析数据库数据 fo

我需要得到这个结果

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['Сумма']],
}
($i=0;$i<$num\u行;$i++)的
{
$row=$adb->query\u result\u rowdata($accountQuery,$i);
[$row['Саааааааа],$row['Ааааааааааа,
}
此代码有语法错误

return [
    for ($i = 0; $i < $num_rows; $i++) {
        $row = $adb->query_result_rowdata($accountQuery, $i);
        [$row['Наименование'], $row['Ассортимент'], $row['Сумма']],
    }
];
返回[
对于($i=0;$i<$num_行;$i++){
$row=$adb->query\u result\u rowdata($accountQuery,$i);
[$row['Саааааааа],$row['Ааааааааааа,
}
];

如何编写循环以在return语句中获得上述结果?

return
语句中不能有controlstructure

首先循环数据,将其附加到数组中,然后返回该数组

$result = array();
for ($i = 0; $i < $num_rows; $i++) {
    $row = $adb->query_result_rowdata($accountQuery, $i);
    $result[] = [$row['Наименование'], $row['Ассортимент'], $row['Сумма']];
}
return $result;
$result=array();
对于($i=0;$i<$num_行;$i++){
$row=$adb->query\u result\u rowdata($accountQuery,$i);
$result[]=[$row['Сааааааа]]、$row['Ааааааааааа];
}
返回$result;

只需在return语句和return数组之前执行以下操作:

$result = [];
for ($i = 0; $i < $num_rows; $i++) {
    $row = $adb->query_result_rowdata($accountQuery, $i);
    $result[] = [$row['Наименование'], $row['Ассортимент'], $row['Сумма']];
}
return $result;
$result=[];
对于($i=0;$i<$num_行;$i++){
$row=$adb->query\u result\u rowdata($accountQuery,$i);
$result[]=[$row['Сааааааа]]、$row['Ааааааааааа];
}
返回$result;

如果您确实需要立即获得完整的结果数组,其他人已经提供了您想要的答案

如果您只想在数组上迭代一次,使用(生成器语法)可能会为您提供另一个非常可读的解决方案:

for ($i = 0; $i < $num_rows; $i++) {
    $row = $adb->query_result_rowdata($accountQuery, $i);
    yield [$row['Наименование'], $row['Ассортимент'], $row['Сумма']];
}
($i=0;$i<$num\u行;$i++)的
{
$row=$adb->query\u result\u rowdata($accountQuery,$i);
收益率[$row['Сааааааа]]、$row['Ааааааааааа107;
}
请注意与您发布的第二段代码的相似性


如果调用
$adb->query\u result\u rowdata(…)
需要一个打开的数据库连接(或其他一些可关闭的资源),则只有在决定不再迭代生成的生成器时,才可以关闭该连接。关闭连接后从生成器检索新值将返回错误。

生成一些结果数组
$result=[],在上面循环返回并向结果添加行
$result[]=[$row['xxx'],$row['yyy']
并返回该数组
return$result@Eakethet,谢谢。我试试看。