2017-05-16 3 views
-2

Hier ist mein PHP-Code, die Testmethode gibt keine gewünschte Ausgabe, und die andere seltsame Sache ist var_dump ('a') 3 Mal drucken;Was ist falsch mit meinem PHP-Code mit rekursive Methode?

meine gewünschte Ausgabe ist Array ('qtggccc', 'qtff23sdf');

+0

warum Sie $ imgArray passing zu testen? – VK321

+2

Warum brauchen Sie eine rekursive Funktion? Was versuchst du zu machen? Sie können einfach jedes Element nehmen und diese Zeichenfolge voranstellen. – cornelb

+1

'test()' Funktion wird 3 Mal aufgerufen, deshalb erhalten Sie drei "a". Das Problem ist hier die Logik. –

Antwort

0

Versuchen Sie folgendes:

class MyClass{ 

    private $imgArray = array(); 

    public function main(){ 

    $serverIds = array('ff23sdf','ggccc'); 
    $res = $this->test($serverIds); 
    print_r($this->imgArray); 
    } 

    public function test($serverIds){ 

    if(count($serverIds) > 0){ 
     $media_id = end($serverIds); 
     $imgUrl= $this->hh($media_id); 
     array_push($this->imgArray,$imgUrl); 
     //remove last element 
     array_pop($serverIds); 
     $this->test($serverIds); 
    } 
    return; 
} 

    public function hh($m){ 
    return 'qt'.$m; 
    } 
} 

$obj = new MyClass(); 
echo '<pre>'; 
$obj->main(); 
+0

danke, es hilft! Und danke an alle. – kuzicala

0

Warum Rekursion verwenden? Sie verwenden eine komplizierte Lösung für ein einfaches Problem.

public function main() 
{ 
    $serverIds = array('ff23sdf','ggccc'); 
    $res = array(); 

    //These three lines replace an entire recursive function, making the code easier and saving a chunk of memory once you start using real arrays 
    foreach ($serverIds as $media_id){ 
     array_unshift($res, $this->hh($media_id)); 
    } 
    var_dump($res); 
} 

public function hh($m) 
{ 
    return 'qt'.$m; 
} 
+0

Dieser Code ist einfach Demo, ich glaube nicht, foreach kann bekommen, was ich will, denn das reale Szenario ist, muss ich einige Bilder von anderen Plattform herunterladen, was ist, wenn das Internet überfüllt ist, wird das Ergebnis nicht zurückgegeben, aber die foreach läuft noch. – kuzicala

+0

Wenn ich einige Bilder auf die Plattform von Drittanbietern mit forEach von Javascript hochgeladen habe, läuft die forEach vollständig, aber das Ergebnis ist undefined, – kuzicala