Heim  >  Artikel  >  Backend-Entwicklung  >  So analysieren Sie Array-Objekte in PHP

So analysieren Sie Array-Objekte in PHP

PHPz
PHPzOriginal
2023-04-24 14:49:541023Durchsuche

Arrays und Objekte gehören zu den am häufigsten verwendeten Datenstrukturen bei der Entwicklung von Webanwendungen. Als Skriptsprache eignet sich PHP sehr gut für die Verarbeitung von Arrays und Objekten. Wenn wir jedoch auf Daten mit komplexen Strukturen wie mehrdimensionalen Arrays, Arrays mit Objekten, Objekten mit Arrays usw. stoßen, erfordert das Parsen von PHP einige Fähigkeiten und Methoden.

In diesem Artikel wird vorgestellt, wie PHP komplexe Strukturdaten wie Arrays, Objekte, verschachtelte Objekte in Arrays und verschachtelte Arrays in Objekten analysiert. Der Parsing-Prozess und die Vorsichtsmaßnahmen werden anhand einiger Beispiele veranschaulicht.

  1. Parsen von Arrays

Arrays in PHP können direkt mit dem Schlüsselwort array oder über das Symbol [] erstellt werden. Das Parsen einfacher Arrays ist sehr einfach. Sie können über Indizes direkt auf die Elemente im Array zugreifen, z. B.:

<?php 
$arr = [&#39;apple&#39;, &#39;banana&#39;, &#39;pear&#39;];
echo $arr[0];   //输出apple
echo $arr[1];   //输出banana
echo $arr[2];   //输出pear
?>

Wenn das Array jedoch komplex wird und mehrdimensionale Arrays enthält, ist der Zugriff auf die Elemente nicht so einfach. An diesem Punkt müssen wir Traversal verwenden, um die Elemente im Array zu analysieren.

<?php 
$arr = [
    &#39;fruit&#39; => [
        'apple' => ['color' => 'red', 'price' => 2],
        'banana' => ['color' => 'yellow', 'price' => 3],
        'pear' => ['color' => 'green', 'price' => 4]
    ]
];

foreach ($arr['fruit'] as $name => $item) {
    echo $name . ':' . $item['color'] . '(' . $item['price'] . '元)<br/>';
}
?>

Im obigen Code verwenden wir eine foreach-Schleife, um die Elemente im Array zu durchlaufen und die Farbe und den Preis jeder Frucht im Array zu erhalten. Diese Traversierungsmethode eignet sich für jede mehrstufige Array-Struktur.

  1. Objekte analysieren

In PHP können wir die Schlüsselwörter class und new verwenden, um Objekte zu erstellen. Das Parsen einfacher Objekte ist sehr einfach und Sie können den Pfeiloperator -> verwenden, um direkt auf die Eigenschaften oder Methoden des Objekts zuzugreifen.

<?php 
class Person {
    public $name;
    public $age;
    public function sayHello() {
        echo &#39;Hello, I\&#39;m &#39; . $this->name . '.';
    }
}

$p = new Person();
$p->name = 'Jack';
$p->age = 18;
$p->sayHello(); //输出Hello, I'm Jack.
?>

Wenn das Objekt jedoch ein inneres Array oder mehrere Objekte enthält, ist für den Zugriff auf die Elemente eine komplexere Traversierungsmethode erforderlich.

Zum Beispiel erstellen wir ein „Charakter“-Objekt. Jeder Charakter enthält ein Array von „Beschriftungen“ und ein „Freund“-Objekt. Das Freund-Objekt enthält zwei Attribute: „Name“ und „Kontaktinformationen“.

<?php 
class Tag {
    public $name;
    public $value;
}

class Friend {
    public $name;
    public $contact;
}

class Person {
    public $name;
    public $age;
    public $tags = [];
    public $friend;
}

Wir erstellen zwei Charakterobjekte, die jeweils zwei Tags und einen Freund enthalten.

$p1 = new Person();
$p1->name = 'Jack';
$p1->age = 18;
$p1->tags[0] = new Tag();
$p1->tags[0]->name = 'sport';
$p1->tags[0]->value = 5;
$p1->tags[1] = new Tag();
$p1->tags[1]->name = 'music';
$p1->tags[1]->value = 3;
$p1->friend = new Friend();
$p1->friend->name = 'Lucas';
$p1->friend->contact = '123456';

$p2 = new Person();
$p2->name = 'Amy';
$p2->age = 20;
$p2->tags[0] = new Tag();
$p2->tags[0]->name = 'reading';
$p2->tags[0]->value = 3;
$p2->tags[1] = new Tag();
$p2->tags[1]->name = 'travel';
$p2->tags[1]->value = 2;
$p2->friend = new Friend();
$p2->friend->name = 'Lily';
$p2->friend->contact = '654321';

Als nächstes durchlaufen wir alle Informationen jedes Zeichens und geben sie auf der Seite aus.

<?php 
echo &#39;<table border="1">';
echo '<tr><th>Name</th><th>Age</th><th>Tags</th><th>Friend</th></tr>';

foreach ([$p1, $p2] as $person) {
    echo '<tr>';
    echo '<td>' . $person->name . '</td>';
    echo '<td>' . $person->age . '</td>';
    echo '<td>';
    foreach ($person->tags as $tag) {
        echo $tag->name . ':' . $tag->value . '<br/>';
    }
    echo '</td>';
    echo '<td>' . $person->friend->name . '<br/>' . $person->friend->contact . '</td>';
    echo '</tr>';
}
echo '</table>';
?>

Im obigen Code verwenden wir zwei foreach-Schleifen, eine zum Durchlaufen des Arrays von Zeichen und eine zum Durchlaufen des Arrays von Beschriftungen innerhalb der Zeichen. Gleichzeitig verwenden wir den Pfeiloperator ->, um Freundesinformationen abzurufen und auszugeben.

  1. Objekte im Array analysieren

Wenn wir ein Array verarbeiten möchten und jedes Element im Array ein Objekt ist, müssen wir die Elemente im Array mit Traversal analysieren und den Pfeiloperator -> verwenden ; um Eigenschaften innerhalb jedes Objekts abzurufen.

Zum Beispiel erstellen wir ein Array zum Speichern von Schülerinformationen. Jeder Schüler hat drei Attribute: Name, Alter und Beruf.

<?php 
class Student {
    public $name;
    public $age;
    public $job;
}

$arr = [
    new Student(),
    new Student(),
    new Student()
];

$arr[0]->name = 'Lucas';
$arr[0]->age = 18;
$arr[0]->job = 'Student';

$arr[1]->name = 'Lily';
$arr[1]->age = 19;
$arr[1]->job = 'Engineer';

$arr[2]->name = 'Jack';
$arr[2]->age = 20;
$arr[2]->job = 'Teacher';
?>

Wir verwenden eine foreach-Schleife, um jedes Element im Array zu durchlaufen, und verwenden den Pfeiloperator ->, um die drei Attribute des Schülers abzurufen und auszugeben.

<?php 
foreach ($arr as $item) {
    echo $item->name . '(' . $item->age . ',' . $item->job . ')<br/>';
}
?>
  1. Array im Objekt analysieren

Wenn wir ein Objekt verarbeiten möchten und ein Attribut im Objekt ein Array ist, müssen wir Traversal verwenden, um die Elemente im Array zu analysieren, und den Pfeiloperator -> verwenden. um andere Eigenschaften innerhalb des Objekts abzurufen.

Zum Beispiel erstellen wir ein Studentenobjekt mit Namen, Alter, Beruf und mehreren Adressen. Eine Adresse enthält Provinz, Stadt, Bezirk und Landkreis, Straßeninformationen und ein boolesches Attribut, das angibt, ob es sich um die Standardadresse handelt.

<?php 
class Address {
    public $province;
    public $city;
    public $district;
    public $street;
    public $isDefault;
}

class Student {
    public $name;
    public $age;
    public $job;
    public $addresses = [];
}

$p = new Student();
$p->name = 'Lucas';
$p->age = 18;
$p->job = 'Student';

$p->addresses[] = new Address();
$p->addresses[0]->province = '江苏省';
$p->addresses[0]->city = '南京市';
$p->addresses[0]->district = '鼓楼区';
$p->addresses[0]->street = '汉口路1号';
$p->addresses[0]->isDefault = true;

$p->addresses[] = new Address();
$p->addresses[1]->province = '江苏省';
$p->addresses[1]->city = '南京市';
$p->addresses[1]->district = '玄武区';
$p->addresses[1]->street = '北京东路1号';
$p->addresses[1]->isDefault = false;
?>

Wir durchlaufen das Adressarray innerhalb des Studentenobjekts, verwenden den Pfeiloperator ->, um andere Attribute des Studenten zu erhalten, und geben sie auf der Seite aus.

<?php 
echo $p->name . '(' . $p->age . ',' . $p->job . ')<br/>';
foreach ($p->addresses as $addr) {
    echo $addr->province . $addr->city . $addr->district . $addr->street;
    echo '默认地址:' . ($addr->isDefault ? '是' : '否') . '<br/>';
}
?>

Um es zusammenzufassen: Wenn PHP komplexe Strukturdaten wie Arrays, Objekte, verschachtelte Objekte in Arrays und verschachtelte Arrays in Objekten analysiert, muss es je nach tatsächlicher Situation unterschiedliche Methoden verwenden, indem es Eigenschaften durchläuft und darauf zugreift, um sie zu analysieren Daten. Bei der Verarbeitung komplexer Daten müssen wir basierend auf der Datenstruktur und den Nutzungsszenarien eine geeignete Parsing-Methode auswählen.

Das obige ist der detaillierte Inhalt vonSo analysieren Sie Array-Objekte in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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