Ich weiß, dass wir in Python und anderen Sprachen Zugriff auf Tupel haben, um die Strukturierung von Daten semantisch oder anderweitig besser zu erleichtern.
Meine Frage ist: Hat PHP Tupel?
Wenn nicht, was ist die nächste Einrichtung?
Brian
Ich weiß, dass wir in Python und anderen Sprachen Zugriff auf Tupel haben, um die Strukturierung von Daten semantisch oder anderweitig besser zu erleichtern.
Meine Frage ist: Hat PHP Tupel?
Wenn nicht, was ist die nächste Einrichtung?
Damien Schwarz
Arrays in PHP können sehr ähnlich wie ein Tupel verwendet werden:
// one dimensional mixed data
$x = [1, 2, "hello"];
// multidimensional third element
$y = [1, 2, [3, 4, 5]];
// assigning to variables (list unpacking)
list($a, $b, $c) = $x; //$a is 1, $b is 2, $c is "hello"
Ab PHP 7.1 können Sie auch so entpacken:
[$a, $b, $c] = $x;
Daniel Williams
Die einzige wirklich eingebaute Datenstruktur von PHP, die die Leute für alles verwenden, ist das Array.
Arrays in PHP sind alle Hash-Tabellen und können entweder numerische oder String-Indizes haben und alles enthalten (normalerweise mehr Arrays).
Es gibt einige Array-Konstrukte, die wie Tupel funktionieren.
Sehen
http://us1.php.net/manual/en/language.types.array.php
List ist sehr praktisch, um mehrere Werte aus einer Funktion zurückzugeben.
Ja, Arrays sind im Grunde Tupel. Sie können sogar verwenden list($var1, $var2) = $someArray;
wodurch $var1 und $var2 initialisiert werden
– Daniel
28. Februar 2014 um 0:33 Uhr
Bitte denken Sie auch daran, dass Sie, um wartbaren Code zu schreiben, die Verwendung von Arrays in PHP so weit wie möglich vermeiden. Die Leute verwenden Arrays als “One-Size-Fits-All”-Datenstruktur, was die Codebasis seltsam und schwer nachvollziehbar macht.
– Benutzer4600953
28. Oktober 2019 um 16:03 Uhr
Die vorherigen Antworten sind insofern richtig, als Sie Tupel mit PHP-Arrays simulieren können, jedoch nur in begrenztem Sinne, nicht für alle Anwendungsfälle. Dies wird deutlich, wenn Sie Tupel als Schlüssel für eine Map verwenden möchten. Z.B. Bei der Implementierung einer Zustandsmaschine wären die Schlüssel in Ihrer Übergangstabelle Tupel:
(currState, Event) -> newState
Wenn wir die richtige Tupelunterstützung in PHP hätten, könnten wir so etwas tun:
$trTable = [
['currState', 'fooEvent'] => 'fooState',
['currState', 'barEvent'] => 'barState',
...
];
Stattdessen müssen wir es wie folgt simulieren:
$trTable = [
'currState' => [
'fooEvent' => 'fooState',
'barEvent' => 'barState',
],
...
];
Beide erzielen das gleiche Ergebnis, aber das erste hat eine klare Semantik.
Ab PHP 7.1 wurde die symmetrische Array-Destrukturierung eingeführt, mit der Sie auf die gleiche Weise zuweisen können wie list()
wie in den vorherigen Kommentaren erwähnt.
// list() style
list($id1, $name1) = [1, 'Hello']; // Same as $id1 = 1 and $name1 = 'Hello'
// [] style
[$id2, $name2] = [2, 'World']; // Same as $id2 = 2 and $name2 = 'World'
Aus https://coderwall.com/p/bah4oq:
function foo()
{
return array('foo', 'bar');
}
list($a, $b) = foo();
Sie können ein Array von Objekten übergeben, das wie ein Tupel verwendet werden soll. Sie können auch heterogene Typen gleichzeitig im Array speichern, was die Funktionalität eines Tupels sehr genau nachahmt.