2008-10-05 8 views

Antwort

5

Hier ein Weg ist, mit dem list Sprachkonstrukt

function returnsAnArray() 
{ 
    return array ('test'); 
} 

list($foo)=returnsAnArray(); 

Sie könnten durch die Kombination mit array_slice

list($third,$fourth,$fifth)=array_slice(returnsAnArray(), 2, 3); 
+0

Warum der Downvote? Es ist eine gültige Möglichkeit, auf ein Array zuzugreifen ... –

+0

Dies ist eigentlich eine sehr gute Möglichkeit, auf ein Array zuzugreifen. Ich habe Leute gesehen, die darüber stolpern, vielleicht, weil sie außerhalb der Standard-C-Flavor-Syntax liegen (d. H. Etwas, das einer Funktion zugewiesen ist). – pilsetnieks

+0

Also wie verallgemeinert man es, um auf den '$ n'ten Wert vom Array zuzugreifen? – moritz

1

Das funktioniert, wenn es nur ein Mitglied in dem Array ist:

<?php 
echo current(returnsAnArray()); 
?> 
+0

Nein, wird es nicht. current() erwartet eine Referenz, daher kann der Wert nicht übergeben werden. Rückgabe und RücksendungAnArray() kann jedoch funktionieren. –

0

du unbekannter Länge für ein indiziertes Array tun könnte.

foreach (returnsAnArray() as $item) 
    echo $item; 
-1

eine Folge von Elementen aus einer Offset greifen frage ich mich, warum man würde es vermeiden, eine temporäre Variable für ein zurückgegebenes Array zu erstellen. Warum gibst du nicht nur einen Wert, sondern ein ganzes Array zurück? Vielleicht müssen Sie Ihre Programmlogik überdenken.

Oder ist es ein Performance/Speicherproblem? Erwägen Sie die Verwendung von references, anstatt immer ein neues Array-Objekt zu erstellen und es zurückzugeben.

+0

Die eigentliche Funktion wird verwendet, um eine Ergebnismenge zu parsen. In bestimmten Fällen weiß ich, dass ich nur einen einzigen Eintrag zurückgeben werde. Ich könnte die Lösung umgestalten, um eine eindeutige Funktion für einzelne Ergebnisse zu verwenden, habe aber das Gefühl, dass ich entweder doppelten oder verschachtelten Code erhalten würde. –

3

Definieren Sie eine neue Funktion zum Zurückgeben eines bestimmten Index aus einem Array.

function arr_index($arr, $i) { return $arr[$i]; } 

Vielleicht möchten Sie etwas Fehler hinzufügen und dort prüfen.

Und dann ist es wie folgt zu verwenden:

<?php 
echo reset(functionThatReturnsAnArray()); 
?> 

ähnliche Gewinde:

echo arr_index(returnsAnArray(), 0); 

Glücklich Eine weitere Option :)

+0

das ist einer der Gründe, warum ich PHP nicht mag. Dies sollte eine eingebaute Sprache sein. (oder zumindest lassen wir etwas wie fReturnsArray() [1] ... – gpilotino

1

Für regelmäßige numerisch indizieren Arrays, wobei func() ein solches Array zurückgibt und $ n der gewünschte Index ist:

array_pop(array_slice(func(),$n,1));

für assoziative Arrays (z.B. Strings oder andere Dinge als Schlüssel), oder numerische Arrays, die nicht nummeriert und von 0..n abgeschlossen sind, ist es ein wenig mehr verschachtelt. Wo $ key ist der Schlüssel wollen Sie:

array_pop(array_intersect_keys(func(),Array($key => ""));

Dies würde auch für den ersten Fall arbeiten.

Verwandte Themen