Heim > Backend-Entwicklung > PHP-Problem > Eine kurze Analyse verschiedener Methoden zum Konvertieren unregelmäßiger Objekte in Arrays

Eine kurze Analyse verschiedener Methoden zum Konvertieren unregelmäßiger Objekte in Arrays

PHPz
Freigeben: 2023-04-23 16:09:24
Original
448 Leute haben es durchsucht

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为数组
Nach dem Login kopieren

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);
Nach dem Login kopieren

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' => '北京',
)
Nach dem Login kopieren

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);
Nach dem Login kopieren

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);
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage