PHP: an Wert anhängen, wenn der Schlüssel bereits existiert, wenn nicht, den Schlüssel hinzufügen

9

Ich suche nach einer prägnanten Art, dies in PHP zu tun:

bei einem Array, wenn ich ein key=>value -Paar hinzufüge, sollte die Routine überprüfen, ob der Schlüssel bereits existiert.

Wenn es nicht existiert, fügen Sie es mit dem key=>value -Paar zum Array hinzu.

Wenn dies der Fall ist, sollte der Wert an den Wert des Arrays angehängt werden. Also, zum Beispiel, wenn das erste Array dies ist

%Vor%

Wenn ich ein 'a'=>'45' -Paar zum Array hinzufüge, wird die Routine mich zurückgeben

%Vor%

Wenn ich ein weiteres 'a=>gt' -Paar hinzufüge, wird die Routine mich zurückgeben

%Vor%

Gibt es eine prägnante Möglichkeit, dies zu tun? Natürlich kann ich es selbst schreiben, aber ich glaube, dass meine Lösung sehr hässlich ist.

    
Graviton 28.08.2009, 10:13
quelle

7 Antworten

18

Sie könnten das Problem lösen, indem Sie auch ein Array für das erste Element ("2e") verwenden:

%Vor%     
FlorianH 28.08.2009, 10:18
quelle
10

Es gibt drei Situationen:

  1. Der Schlüssel ist nicht definiert
  2. Der Schlüssel ist definiert, aber noch nicht auf ein Array gesetzt
  3. Der Schlüssel ist definiert, und das Element ist ein Array.

Also, im Code:

%Vor%

Es ist nur der letzte Fall, der schwierig ist: Wenn es noch kein Array ist, müssen Sie einen mit dem aktuellen Wert plus dem neuen erstellen.

    
VoteyDisciple 28.08.2009 10:17
quelle
4
%Vor%

macht genau das, was Sie wollen.

    
Amber 28.08.2009 10:19
quelle
0

Sie müssen eine Funktion schreiben, die das tut. Oder initialisiere dein erstes Element als Array und benutze die array_push Funktion, um neue Elemente hinzuzufügen.

%Vor%     
RaYell 28.08.2009 10:16
quelle
0

Versuchen Sie es

%Vor%     
mck89 28.08.2009 10:19
quelle
0
%Vor%

So ähnlich? Sie können dies sicherlich vereinfachen, indem Sie den ersten Wert als ein Ein-Element-Array hinzufügen, oder indem Sie ternar-Operatoren verwenden, aber trotzdem benötigen Sie eine benutzerdefinierte Funktion, um die Aufgabe zu erledigen.

    
n1313 28.08.2009 10:19
quelle
0

Ausschließlich Array:

%Vor%

String mit Trennzeichen:

%Vor%

Wenn Sie die Zeichenfolge als Array benötigen, tun Sie einfach $arr['a'] = explode("/",$arr['a']);

Beide Methoden sind hässlich ... Sie sollten versuchen, wie FlorianH vorgeschlagen hat, die ganze Variable als Array zu verwenden.

Eine andere Methode könnte sein, die Schnittstelle in PHp zu verwenden und etwas zu erstellen, das die Iterator- und ArrayAccess-Schnittstellen herstellt. ( Ссылка , Ссылка )

    
Quamis 28.08.2009 11:14
quelle

Tags und Links