Was ist der einfachste Weg, um ein 2D-Array zu erstellen? Ich hatte gehofft, etwas Ähnliches tun zu können:
declare int d[0..m, 0..n]
Sie können auch ein assoziatives Array oder ein "Hash-Table" -ähnliches Array erstellen, indem Sie den Index des Arrays angeben.
$array = array(
0 => array(
'name' => 'John Doe',
'email' => '[email protected]'
),
1 => array(
'name' => 'Jane Doe',
'email' => '[email protected]'
),
);
Welches ist gleichbedeutend mit
$array = array();
$array[0] = array();
$array[0]['name'] = 'John Doe';
$array[0]['email'] = '[email protected]';
$array[1] = array();
$array[1]['name'] = 'Jane Doe';
$array[1]['email'] = '[email protected]';
Die folgenden sind äquivalent und führen zu einem zweidimensionalen Array:
oder
quelle
Einfach deklarieren? Das musst du nicht. Stellen Sie einfach sicher, dass eine Variable vorhanden ist:
Die Größe von Arrays wird dynamisch geändert, und der Versuch, etwas in ein nicht vorhandenes Element zu schreiben, erstellt es (und erstellt bei Bedarf das gesamte Array).
Dies gilt für eine beliebige Anzahl von Dimensionen ohne vorherige Erklärung.
quelle
count
die richtige Dimension verwenden, z. B. escount($d[1])
sei denn, ich verstehe Ihren Standpunkt falsch?Erstens hat PHP keine mehrdimensionalen Arrays, sondern Arrays von Arrays.
Zweitens können Sie eine Funktion schreiben, die dies erledigt:
quelle
Für eine einfache "Fill as you go" -Lösung:
$foo = array(array());
Dadurch erhalten Sie ein flexibles zweidimensionales Pseudo-Array, das $ foo [ n ] [ n ] mit n <= ∞ enthalten kann (natürlich sind Sie durch die üblichen Einschränkungen der Speichergröße begrenzt, aber ich hoffe, Sie haben die Idee). Dies könnte theoretisch erweitert werden, um so viele Sub-Arrays zu erstellen, wie Sie benötigen.
quelle
Oder für größere Arrays mit demselben Wert:
erstellt ein
$m
by-$n
Array, auf das alles eingestellt ist$value
.quelle
Soweit mir bekannt ist, gibt es dafür keine eingebaute PHP-Funktion. Sie müssen dies über eine Schleife oder über eine benutzerdefinierte Methode tun, die rekursiv etwas wie array_fill aufruft, das in der Antwort von @Amber angegeben ist.
Ich gehe davon aus, dass Sie damit ein leeres, aber initialisiertes Array von Arrays erstellt haben. Zum Beispiel möchten Sie ein Endergebnis wie das folgende eines Arrays von 3 Arrays :
Dies ist einfach, nur von Hand zu codieren, aber für ein Array beliebiger Größe wie ein Array mit 3 Arrays mit 3 Arrays wird die Initialisierung vor der Verwendung immer komplexer:
...etc...
Ich bekomme die Frustration. Es wäre schön, eine einfache Möglichkeit zu haben, ein initialisiertes Array von Arrays mit beliebiger Tiefe zu deklarieren, ohne Fehler zu überprüfen oder auszulösen.
quelle
Die Antwort von atli hat mir wirklich geholfen, das zu verstehen. Hier ist ein Beispiel für das Durchlaufen eines zweidimensionalen Arrays. Dieses Beispiel zeigt, wie Sie Werte für bekannte Namen eines Arrays und einen Foreach finden, in dem Sie einfach alle dort gefundenen Felder durchgehen. Ich hoffe es hilft jemandem.
Ausgänge:
quelle
Und für mich hängt das Argument, ob ein Array spärlich sein soll oder nicht, vom Kontext ab.
Wenn beispielsweise $ a [6] [9] nicht ausgefüllt ist, entspricht dies $ a [6] [9], das beispielsweise mit "" oder 0 gefüllt ist.
quelle
Um ein einzelnes Array-Element wiederzugeben, sollten Sie Folgendes schreiben:
Ausgabe wäre:
arr1 arr2
quelle
Und ich mag diesen Weg:
quelle
Wenn Sie schnell ein mehrdimensionales Array für einen einfachen Wert mit einem Liner erstellen möchten, würde ich empfehlen, diese Array-Bibliothek folgendermaßen zu verwenden:
was produzieren wird
quelle
Sie können dies versuchen, aber die Werte der zweiten Dimension entsprechen den Indizes:
$array = array_fill_keys(range(0,5), range(0,5));
etwas komplizierter für leeres Array:
$array = array_fill_keys(range(0, 5), array_fill_keys(range(0, 5), null));
quelle
Sie müssen ein Array in einem anderen Array deklarieren.
$arr = array(array(content), array(content));
Beispiel:
$arr = array(array(1,2,3), array(4,5,6));
Um das erste Element aus dem Array abzurufen, verwenden Sie Folgendes
$arr[0][0]
: Dies entspricht dem ersten Element aus dem ersten Array aus dem Array.$arr[1][0]
gibt das erste Element aus dem zweiten Array aus dem Array zurück.quelle