Frage

Ich möchte, bis der Punkt eine Reihe von Werten aus der Funktion zurück sie existieren .... zum Beispiel ....

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
}

Danke ....

@therefromhere Ich bin auch ein Array in der Schleife zu schaffen, werde ich den ursprünglichen Code einfügen müssen, damit sie in einer besseren Art und Weise verstehen

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();
        }

    }

nun ihre sind nur fünf Datenzeilen so sie kein Punkt ist $ t6 Rückkehr $ t7 $ t8 $ t9 $ t10 und ich möchte, um es zu beheben, und ich rufe die Funktion mit

$extract=extracting_comments($table, $fields,$condition,$order,$limit);

Bitte helfen ... danke

War es hilfreich?

Lösung

Ich glaube, das wird Ihnen helfen. Sie haben sehr komplizierten Code mit vielen Nebenwirkungen und Fehlern, sollten Sie besser halten es für redisgn. Auch Aussagen nach der Rückkehr setzen wird nicht irgendeine Wirkung haben, da sie nicht geltend gemacht werden würde.

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;
                        $result = array();
                        while($stmt->fetch()) {
                        $i++;
                        foreach ($row as $b=>$elem) {
                        $atul[$b]=$row[$b];
                        }
                        $result[]=$atul;
                        }
                        $stmt->close();
                        return $result;
                }

        }

Andere Tipps

Sie einfach das Array in Ihrer for Schleife bauen:

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

Nachdem Sie Ihre Frage bearbeitet ein enthüllt uns Ihre eigentliche Problem finden hier mein Vorschlag:

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

Es wäre sauberer das Array zu bauen, wie Sie gehen, dann würden Sie die temporären Variablen nicht brauchen:

function abc($i="3") {
  $myArray = array();
  for($a=1;$a<=$i;$a++) {
    $myArray[] = "ae" . $a;  // add new values to the end of the array
  }

  return $myArray;
}

Wenn Sie überprüfen wollen, ob die Variablen bestehen (und sind nicht null), verwenden Sie isset () .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top