php - 函数动态返回值

hal*_*sed 0 php return function

我想从函数返回一组值,直到它们存在......例如....

function abc($i="3"){

    for($a=1;$a<=$i;$a++) {
        $name='t'.$i;
        $$name = "ae".$a;
    }
    //now i am returning values 
    return array($t1,$t2,$t3,$t4,$t5,$t6,$t7,$t8,$t9,$t10);
    //but i only want to return $t1,$t2,$t3 depending on $i
}
Run Code Online (Sandbox Code Playgroud)

谢谢....

@therefromhere我也在循环中创建一个数组,我将粘贴原始代码,以便您可以更好地理解它

function extracting_comments($table, $fields,$condition,$order,$limit){
        $query="SELECT ".$fields."
                FROM ".$table."
                WHERE ".$condition."
                ORDER BY ".$order."
                LIMIT ".$limit." ";
        if($stmt = $this->conn->prepare($query)) {
            $stmt->execute();
            $row = array_pad(array(), $stmt->field_count, '');
            $params = array();
                foreach($row as $k=>$v) {
                  $params[] = &$row[$k];
                  echo $params[0];
                }
            call_user_func_array(array($stmt,'bind_result'),$params);
            $i=0;
            while($stmt->fetch()) {
            $i++;
            $name='t'.$i;
            $$name = array();
            foreach ($row as $b=>$elem) {
            $atul[$b]=$row[$b];
            }
            $$name=$atul;
            }
            return array($t1,$t2,$t3,$t4,$t5,$t6,$t7,$t8,$t9,$t10);
            $stmt->close();
        }

    }
Run Code Online (Sandbox Code Playgroud)

现在他们只有5行数据所以他们没有点返回$ t6,$ t7,$ t8,$ t9,$ t10我想修复它,我正在使用函数调用

$extract=extracting_comments($table, $fields,$condition,$order,$limit);
Run Code Online (Sandbox Code Playgroud)

请帮忙...谢谢

Gum*_*mbo 10

只需在for循环中构建数组:

function abc($i=3) {
    $array = array();
    for ($a=1; $a<=$i; $a++) {
        $array[] = "ae".$a;
    }
    return $array;
}
Run Code Online (Sandbox Code Playgroud)

在您编辑问题后,向我们展示了您的实际问题,请在此处查看我的建议:

function extracting_comments($table, $fields, $condition, $order, $limit) {
    $retVal = array();
    $query = "SELECT ".$fields."
        FROM ".$table."
        WHERE ".$condition."
        ORDER BY ".$order."
        LIMIT ".$limit." ";
    if ($stmt = $this->conn->prepare($query)) {
        $stmt->execute();
        $row = array_pad(array(), $stmt->field_count, '');
        call_user_func_array(array($stmt, 'bind_result'), $row);
        while ($stmt->fetch()) {
            $retVal[] = $row;
        }
        $stmt->close();
        return $retVal;
    }
}
Run Code Online (Sandbox Code Playgroud)