Dies funktioniert jedoch nicht mit assoziativen Arrays. Die Schlüssel gehen verloren.
ESCOBAR
4
@ESCOBAR: Assoziative Arrays haben nicht unbedingt eine Reihenfolge, sie ordnen nur Schlüssel Werten zu. "Werte 3 bis 7" macht also sowieso keinen Sinn ...
knittl
richtig, aber in diesem Fall hat es nichts mit der Bestellung zu tun. Es geht nur um die ersten 5 Artikel. und Sie können array_slice hier nicht verwenden.
ESCOBAR
2
@ESCOBAR: Es gibt keine ersten Artikel, wenn Sie keine definierte Reihenfolge haben. "Zuerst" funktioniert nur, wenn Sie erkennen können, welcher Artikel vor oder nach anderen Artikeln kommt. Aber nur zum Spaß können Sie die Schlüssel mit den Werten des Arrays neu kombinieren (obwohl es noch keine definierte Reihenfolge gibt):array_combine(array_slice(array_keys($array), 0, 5), array_slice($array, 0, 5))
knittl
1
@darkhorizon: „ array_sliceReturns eine Scheibe eines Arrays“. Aber ich werde meine Antwort bearbeiten, um sie etwas klarer zu machen.
Knittl
9
array_splice - Entfernen Sie einen Teil des Arrays und ersetzen Sie ihn durch etwas anderes:
$input = array(1,2,3,4,5,6);
array_splice($input,5);// $input is now array(1, 2, 3, 4, 5)
Wenn die Länge weggelassen wird, wird alles vom Versatz bis zum Ende des Arrays entfernt . Wenn die Länge angegeben und positiv ist, werden so viele Elemente entfernt. Wenn die Länge angegeben und negativ ist, besteht das Ende des entfernten Abschnitts aus so vielen Elementen vom Ende des Arrays. Tipp: Um alles vom Versatz bis zum Ende des Arrays zu entfernen, wenn auch das Ersetzen angegeben ist, verwenden Sie count ($ input) für die Länge.
Die Syntax ersten 5 Elemente zurückzukehren array_splice ($ input, 5)
Aland
@AndrejsCainikovs Laut php.net "Wenn die Länge weggelassen wird, hat die Sequenz alles vom Offset bis zum Ende des Arrays." Der fettgedruckte Text der Antwort sagt genau das Gegenteil aus.
@AndrejsCainikovs wahrer Kumpel, ich hatte eine Seite für array_slice und bemerkte nicht, dass Ihre Antwort über array_splice war ... mein schlechtes: D
Kalko
3
Wenn Sie nur die ersten 5 Elemente ausgeben möchten, sollten Sie Folgendes schreiben:
Sie können die Funktion array_slice verwenden, verwenden Sie jedoch andere Werte? oder nur die ersten 5? Denn wenn Sie nur die ersten 5 verwenden, können Sie das LIMIT unter SQL verwenden.
Antworten:
array_slice
Gibt einen Slice eines Arrays zurückist der Code, der in Ihrem Fall die ersten fünf Elemente zurückgeben soll
quelle
array_combine(array_slice(array_keys($array), 0, 5), array_slice($array, 0, 5))
array_slice
Returns eine Scheibe eines Arrays“. Aber ich werde meine Antwort bearbeiten, um sie etwas klarer zu machen.array_splice - Entfernen Sie einen Teil des Arrays und ersetzen Sie ihn durch etwas anderes:
Aus dem PHP-Handbuch:
Wenn die Länge weggelassen wird, wird alles vom Versatz bis zum Ende des Arrays entfernt . Wenn die Länge angegeben und positiv ist, werden so viele Elemente entfernt. Wenn die Länge angegeben und negativ ist, besteht das Ende des entfernten Abschnitts aus so vielen Elementen vom Ende des Arrays. Tipp: Um alles vom Versatz bis zum Ende des Arrays zu entfernen, wenn auch das Ersetzen angegeben ist, verwenden Sie count ($ input) für die Länge.
quelle
Wenn Sie nur die ersten 5 Elemente ausgeben möchten, sollten Sie Folgendes schreiben:
Wenn Sie eine Funktion schreiben möchten, die einen Teil des Arrays zurückgibt, sollten Sie array_slice verwenden:
quelle
Sie können die Funktion array_slice verwenden, verwenden Sie jedoch andere Werte? oder nur die ersten 5? Denn wenn Sie nur die ersten 5 verwenden, können Sie das LIMIT unter SQL verwenden.
quelle
Eine objektorientiertere Methode wäre die Bereitstellung eines Bereichs für die # [] -Methode. Zum Beispiel:
Angenommen, Sie möchten die ersten 3 Elemente aus einem Array.
Zahlen = [1,2,3,4,5,6]
Zahlen [0..2] # => [1,2,3]
Angenommen, Sie möchten die ersten x Elemente aus einem Array.
Zahlen [0..x-1]
Das Tolle an dieser Methode ist, dass wenn Sie mehr Elemente als das Array anfordern, einfach das gesamte Array zurückgegeben wird.
Zahlen [0..100] # => [1,2,3,4,5,6]
quelle