Maison >développement back-end >Problème PHP >Comment analyser des objets de tableau en php

Comment analyser des objets de tableau en php

PHPz
PHPzoriginal
2023-04-24 14:49:541047parcourir

Les tableaux et les objets sont l'une des structures de données les plus couramment utilisées lors du développement d'applications Web. En tant que langage de script, PHP est très pratique pour traiter des tableaux et des objets. Cependant, lorsque nous rencontrons des données avec des structures complexes telles que des tableaux multidimensionnels, des tableaux contenant des objets, des objets contenant des tableaux, etc., l'analyse PHP nécessite certaines compétences et méthodes.

Cet article présentera comment PHP analyse les données structurelles complexes telles que les tableaux, les objets, les objets imbriqués dans des tableaux et les tableaux imbriqués dans les objets. Il illustrera le processus d'analyse et les précautions à travers quelques exemples.

  1. Parsing arrays

Les tableaux en PHP peuvent être créés directement à l'aide du mot-clé array ou via le symbole []. L'analyse de tableaux simples est très simple. Vous pouvez accéder directement aux éléments du tableau via des indices, tels que :

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

Cependant, lorsque le tableau devient complexe et contient des tableaux multidimensionnels, l'accès aux éléments n'est pas si simple. À ce stade, nous devons utiliser le parcours pour analyser les éléments du tableau.

<?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/>';
}
?>

Dans le code ci-dessus, nous utilisons une boucle foreach pour parcourir les éléments du tableau et obtenir la couleur et le prix de chaque fruit du tableau. Cette méthode de parcours convient à toute structure de tableau à plusieurs niveaux.

  1. Parsing d'objets

En PHP, nous pouvons utiliser les mots-clés class et new pour créer des objets. L'analyse d'objets simples est très simple, et vous pouvez utiliser l'opérateur flèche -> pour accéder directement aux propriétés ou méthodes de l'objet.

<?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.
?>

Cependant, lorsque l'objet contient un tableau interne ou plusieurs objets, l'accès aux éléments nécessite une méthode de parcours plus complexe.

Par exemple, nous créons un objet "personnage". Chaque personnage contient un tableau de "étiquettes" et un objet "ami". L'objet ami contient deux attributs : "nom" et "informations de contact".

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

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

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

Nous créons deux objets personnages, chacun contenant deux tags et un ami.

$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';

Ensuite, nous parcourons toutes les informations de chaque personnage et les publions sur la page.

<?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>';
?>

Dans le code ci-dessus, nous utilisons deux boucles foreach, une pour parcourir le tableau de caractères et une pour parcourir le tableau d'étiquettes dans les caractères. En même temps, nous utilisons l'opérateur fléché -> pour obtenir et afficher des informations sur les amis.

  1. Analyser les objets du tableau

Lorsque nous voulons traiter un tableau et que chaque élément du tableau est un objet, nous devons utiliser le parcours pour analyser les éléments du tableau et utiliser l'opérateur de flèche -> ; pour obtenir les propriétés de chaque objet.

Par exemple, nous créons un tableau pour stocker les informations sur les étudiants. Chaque étudiant a trois attributs : nom, âge et profession.

<?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';
?>

Nous utilisons une boucle foreach pour parcourir chaque élément du tableau et utilisons l'opérateur flèche -> pour obtenir et afficher les trois attributs de l'étudiant.

<?php 
foreach ($arr as $item) {
    echo $item->name . '(' . $item->age . ',' . $item->job . ')<br/>';
}
?>
  1. Analyser le tableau dans l'objet

Lorsque nous voulons traiter un objet et qu'un attribut de l'objet est un tableau, nous devons utiliser le parcours pour analyser les éléments du tableau et utiliser l'opérateur de flèche -> pour obtenir d'autres propriétés dans l'objet.

Par exemple, nous créons un objet étudiant. Les étudiants ont des noms, des âges, des professions et plusieurs adresses. Une adresse contient la province, la ville, le district et le comté, les informations sur la rue et un attribut booléen indiquant s'il s'agit de l'adresse par défaut.

<?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;
?>

Nous parcourons le tableau d'adresses dans l'objet étudiant, utilisons l'opérateur fléché -> pour obtenir d'autres attributs de l'étudiant et les publions sur la page.

<?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/>';
}
?>

Pour résumer, lorsque PHP analyse des données structurelles complexes telles que des tableaux, des objets, des objets imbriqués dans des tableaux et des tableaux imbriqués dans des objets, il doit utiliser différentes méthodes en fonction de la situation réelle, en parcourant et en accédant aux propriétés pour analyser le données. Lors du traitement de données complexes, nous devons choisir une méthode d'analyse appropriée en fonction de la structure des données et des scénarios d'utilisation.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn