Maison  >  Article  >  développement back-end  >  Pourquoi la variable dans la valeur du tableau bidimensionnel de la classe php signale-t-elle une erreur ?

Pourquoi la variable dans la valeur du tableau bidimensionnel de la classe php signale-t-elle une erreur ?

PHPz
PHPzoriginal
2023-04-27 09:02:51569parcourir

En PHP, nous pouvons utiliser des classes pour définir certains types de données complexes afin d'obtenir une modularisation et une réutilisation plus flexibles du code, et les tableaux bidimensionnels sont l'un des types de données couramment utilisés en PHP et peuvent être utilisés pour stocker des données structurées complexes. Mais parfois, lors de l'utilisation de classes et de tableaux à deux dimensions, vous pouvez rencontrer des erreurs causées par des variables contenues dans la valeur. Ce qui suit expliquera comment résoudre ce problème à travers une analyse de cas et des solutions.

Contexte du cas

Dans un certain projet PHP, certaines informations sur les étudiants doivent être stockées dans un tableau bidimensionnel et regroupées en fonction du niveau et de la classe. Tout d'abord, une classe nommée Student est définie, le code est le suivant :

class Student {
    public $name;
    public $age;
    public $grade;
    public $class;
}

Ensuite, un tableau bidimensionnel nommé $students est défini pour stocker plusieurs instances Student, le code est le suivant :

$students = [
    ['name' => '张三', 'age' => 18, 'grade' => 1, 'class' => 1],
    ['name' => '李四', 'age' => 19, 'grade' => 1, 'class' => 2],
    ['name' => '王五', 'age' => 18, 'grade' => 2, 'class' => 1],
    ['name' => '赵六', 'age' => 19, 'grade' => 2, 'class' => 2]
];

Ensuite, ces informations sur les étudiants ont besoin à trier par niveau Regroupez la classe en groupes puis comptez le nombre de personnes dans chaque groupe. Le code est le suivant :

$count = [];
foreach ($students as $student) {
    $count[$student['grade']][$student['class']]++;
}

Mais lorsque vous exécutez le code ci-dessus, vous trouverez un message d'erreur :

PHP Warning:  Undefined offset: 1

Analyse du problème

Dans le code ci-dessus, la variable $count est un tableau à deux dimensions, $student[ 'grade'] et $student['class'] sont utilisés pour obtenir les informations sur la note et la classe de chaque élève. Ces deux informations sont utilisées comme indices secondaires du tableau $count pour implémenter des statistiques de groupe sur les informations sur les étudiants. Cependant, dans le tableau $count, l'indice de deuxième niveau correspondant commence à compter à partir de 0, tandis que les informations sur la note et la classe dans $student['grade'] et $student['class'] commencent toutes deux à compter à partir de 1. Par conséquent, un écart se produit lors de l’accès à un tableau bidimensionnel.

De plus, la valeur du tableau $count est initialement nulle et le type de valeur est entier. Par conséquent, lorsque vous y ajoutez 1, une conversion de type de valeur se produira et une erreur se produira. C'est aussi une des causes d'erreurs.

Solution

Afin de résoudre le problème ci-dessus, le code doit être ajusté de manière appropriée. Plus précisément, les valeurs de $student['grade'] et $student['class'] peuvent être réduites de 1 respectivement pour s'adapter aux exigences d'indice du tableau $count. Dans le même temps, le tableau $count doit être initialisé pour éviter les erreurs de conversion de type.

Le code refactorisé est le suivant :

$count = [];
foreach ($students as $student) {
    $grade = $student['grade'] - 1;
    $class = $student['class'] - 1;
    if (!isset($count[$grade][$class])) {
        $count[$grade][$class] = 0;
    }
    $count[$grade][$class]++;
}

Dans ce nouveau code, nous soustrayons d'abord 1 des valeurs de $student['grade'] et $student['class'], puis déterminons le deuxième correspondant. level Si l'index existe dans le tableau $count, s'il n'existe pas, il est initialisé à 0. Après cela, lors de l'ajout de 1 au tableau $count, il n'y aura aucune erreur de conversion de type ni problème d'indice hors limites.

Conclusion

En PHP, les classes et les tableaux sont des types de données couramment utilisés, mais leur complexité et leur flexibilité entraînent parfois certains problèmes. À partir d'un exemple, cet article analyse en détail les raisons pour lesquelles les variables dans les valeurs des classes et des tableaux signalent des erreurs, ainsi que la manière d'ajuster et d'améliorer les solutions. J'espère que ce contenu pourra être inspirant et utile aux développeurs PHP.

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