Heim >Backend-Entwicklung >PHP-Problem >Eine kurze Analyse verschiedener Methoden zum Konvertieren unregelmäßiger Objekte in Arrays
In PHP müssen wir manchmal ein Objekt in ein Array konvertieren, um unsere Datenoperationen zu erleichtern. Wenn der Attributname des Objekts mit dem Schlüsselwert des Arrays übereinstimmt, können wir normalerweise direkt die Objekt-zu-Array-Funktion verwenden, zum Beispiel:
$array = (array) $obj; // $obj为对象,$array为数组
Wenn jedoch das Objektattribut Der Name ist unregelmäßig, z. B. Attribut. Der Name enthält Unterstriche, Bindestriche oder Großbuchstaben usw. Zu diesem Zeitpunkt müssen wir die Attributnamen manuell verarbeiten und in zulässige Array-Schlüsselnamen konvertieren. Im Folgenden stellen wir verschiedene Methoden zum Konvertieren unregelmäßiger Objekte in Arrays vor.
Methode 1: Verwenden Sie die Funktion get_object_vars()
Mit der Funktion get_object_vars() können alle Attribute und Attributwerte abgerufen werden des Objekts und geben ein assoziatives Array zurück. Mit dieser Funktion können wir die Objektattributliste abrufen und dann verarbeiten.
$obj = new stdClass(); $obj->user_name = '张三'; $obj->user_age = 20; $obj->{'user_city-name'} = '北京'; $arr = array(); $vars = get_object_vars($obj); foreach($vars as $key => $value){ $arr[str_replace('_', '-', $key)] = $value; } var_export($arr);
Im obigen Beispiel verwenden wir die Funktion get_object_vars(), um alle Attribute und Attributwerte des Objekts abzurufen, und verwenden dann eine foreach-Schleife, um die Unterstriche zu durchlaufen und zu konvertieren die Attributnamen in Bindestriche umwandeln. Das endgültig konvertierte Array lautet wie folgt:
array ( 'user_name' => '张三', 'user_age' => 20, 'user-city-name' => '北京', )
Beachten Sie, dass diese Methode nur die Eigenschaften des Objekts verarbeitet und keine geerbten Eigenschaften enthält.
Methode 2: Verwenden Sie die Funktionen json_encode() und json_decode().
Wir können zum Konvertieren auch die Funktionen json_encode() und json_decode() verwenden Objekte in das JSON-Format konvertieren und dann die Funktion json_decode() verwenden, um das JSON-Format zurück in ein Array zu konvertieren.
$obj = new stdClass(); $obj->user_name = '张三'; $obj->user_age = 20; $obj->{'user_city-name'} = '北京'; $json_str = json_encode($obj); $arr = json_decode($json_str, true); foreach($arr as $key => $value){ $new_key = str_replace('_', '-', $key); unset($arr[$key]); $arr[$new_key] = $value; } var_export($arr);
Im obigen Beispiel verwenden wir die Funktion json_encode(), um das Objekt in das JSON-Format zu konvertieren, und verwenden dann die Funktion json_decode(), um das JSON-Format zurück in ein Array zu konvertieren. Verwenden Sie dann eine foreach-Schleife, um das Array zu durchlaufen und die Unterstriche in den Attributnamen in Bindestriche umzuwandeln. Das endgültig konvertierte Array ist dasselbe wie Methode eins.
Methode 3: Verwenden Sie die Funktion array_map().
Die Funktion array_map() kann eine Rückruffunktion auf jedes Element im Array anwenden und eine zurückgeben neues Array. Mit dieser Funktion können wir Unterstriche in Eigenschaftsnamen in Bindestriche umwandeln.
$obj = new stdClass(); $obj->user_name = '张三'; $obj->user_age = 20; $obj->{'user_city-name'} = '北京'; $arr = (array) $obj; $arr = array_map(function($key){ return str_replace('_', '-', $key); }, array_keys($arr)); $arr = array_combine($arr, (array) $obj); var_export($arr);
Im obigen Beispiel verwenden wir die Funktion array_map, um den Unterstrich im Attributnamen in einen Bindestrich umzuwandeln, verwenden die Funktion array_keys(), um die Attributliste des Objekts abzurufen, und verwenden dann die Funktion array_combine() zum Kombinieren des Attributnamens mit dem Attributwert, der in ein Array konvertiert wird. Das endgültig konvertierte Array ist dasselbe wie Methode eins und Methode zwei.
Zusammenfassung:
Wenn wir ein Objekt in ein Array konvertieren müssen und auf unregelmäßige Attributnamen stoßen, können wir get_object_vars(), json_encode(), array_map() usw. verwenden .Funktion zum Verarbeiten. Mit diesen Methoden können wir unregelmäßige Objekte leicht in reguläre Arrays umwandeln, um unsere Datenoperationen zu erleichtern.
Das obige ist der detaillierte Inhalt vonEine kurze Analyse verschiedener Methoden zum Konvertieren unregelmäßiger Objekte in Arrays. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!