PHP: Kann ein Array ein Array als Schlüssel in einem Schlüssel / Wert-Paar haben?

9

Ich bekomme einen "ungültigen Offset-Typ" für dieses Array:

%Vor%

es ist irgendwie ärgerlich, ein anderes Array zu erstellen, nur um zu definieren, was hier in den Schlüsseln definiert ist, also habe ich mich gefragt, ob das mein Problem war. Wenn es so ist, muss ich ein Schlüssel-Wert-Array für die Kategorien IDs und String-Werte erstellen.

Danke!

    
Garrett 17.08.2010, 16:30
quelle

3 Antworten

8

Sie erhalten einen illegal offset type Fehler, da Array-Schlüssel nur skalare Werte sein können. Aus der Dokumentation zu Arrays:

  

Ein Schlüssel kann entweder eine Ganzzahl oder eine Zeichenfolge sein. Wenn ein Schlüssel die Standarddarstellung einer ganzen Zahl ist, wird er als solcher interpretiert (d. H. "8" wird als 8 interpretiert, während "08" als "08" interpretiert wird). Floats in Schlüssel werden auf Ganzzahl abgeschnitten.

Seit self::CAT_CRON_JOBS et al. scheinen, als sollten sie sowieso Konstanten sein, warum definieren Sie sie nicht einfach so, dass ihr Wert der Beschreibungstext ist, und dann können Sie einfach Ihr Array wie

angeben %Vor%

Und dann könnten Sie entweder $CATS_AND_TYPES[self::CAT_STATEMENT_ADMIN] (innerhalb der Klasse natürlich) oder $CATS_AND_TYPES['Document Administration'] verwenden, um das gleiche Array-Element zu erhalten.

    
Daniel Vandersluis 17.08.2010, 16:33
quelle
1

Nein. Arrays können nur ganze Zahlen und Zeichenfolgen als Schlüssel haben.

Sie können Arrays simulieren und Objekte als Schlüssel für SplObjectStorage verwenden. Keine Arrays, obwohl.

    
Artefacto 17.08.2010 16:47
quelle
1

Ich denke, es ist dein Problem: P

Ich würde das Problem so angehen

%Vor%

Ich nehme an, das ist im Grunde das, was du mit "mach ein anderes Array" meinst. Dies ist der richtige Ansatz für das Problem, weil es die Übersetzung und die hierarchische Information trennt.

Stellen Sie sich vor, Sie möchten Ihr Projekt in eine andere Sprache übersetzen. Wenn Sie einen Übersetzer angestellt haben, sollte er die hierarchische Struktur Ihres Projekts nicht kennen müssen, da er nur übersetzen sollte. Sie können $TRANSLATIONS auch in eine andere Datei extrahieren, so dass Sie diese Datei an 99 Übersetzer verteilen können und Ihr Projekt an einem Tag mehrsprachig ist!

Wenn Sie so geneigt sind, können Sie Ihr Array in einen Skalarwert serialisieren, so dass es als Schlüssel fungieren kann.

%Vor%     
kizzx2 17.08.2010 17:05
quelle

Tags und Links