Dans PHP, Array_Fill () est une fonction très pratique qui peut rapidement générer des tableaux de tailles prédéfinies et de contenu. Mais il y a une utilisation apparemment étrange, qui est d'utiliser Null comme valeur de rembourrage pour initialiser le tableau. Est-ce une signification pratique? Est-il nécessaire de l'utiliser en développement? Discutons-le ensemble.
Regardons d'abord la syntaxe de base de array_fill () :
array_fill(int $start_index, int $count, mixed $value): array
Cette fonction générera des éléments de comptage de $ à partir de la valeur $ start_index spécifiée, et la valeur de chaque élément est une valeur $ . Par exemple:
$filled = array_fill(0, 5, null);
print_r($filled);
Sortir:
Array
(
[0] =>
[1] =>
[2] =>
[3] =>
[4] =>
)
Dans cet exemple, nous obtenons un tableau contenant 5 valeurs nulles .
En surface, la remplissage des valeurs nuls ne semble pas avoir de sens, mais elle est en fait très utile dans certains scénarios:
Parfois, nous voulons d'abord «occuper» un tableau, puis remplir la valeur spécifique en fonction de la logique plus tard. Par exemple:
$results = array_fill(0, 10, null);
foreach ($data as $item) {
$index = $item['position'];
$results[$index] = $item['value'];
}
Dans ce cas, $ Results garantit une longueur fixe depuis le début, et chaque position est nul par défaut. Cela évite les erreurs ou les avertissements causés par l'accès aux indices non définis.
Sur certaines pages frontales, telles que des tables, des graphiques ou des systèmes de pagination, nous voulons que toutes les structures de données soient complètes, même si certains emplacements n'ont pas de valeurs. De cette façon, la structure JSON retournée est plus régulière. Par exemple:
$data = array_fill(1, 12, null); // 1 Le mois est là 12 La valeur par défaut du mois
// Supposons qu'il n'y a que 2 lune、3 lune和 7 lune的数据
$data[2] = 150;
$data[3] = 180;
$data[7] = 90;
echo json_encode($data);
Sortir:
{
"1": null,
"2": 150,
"3": 180,
"4": null,
"5": null,
"6": null,
"7": 90,
"8": null,
"9": null,
"10": null,
"11": null,
"12": null
}
Cette structure peut réduire le traitement de la logique de jugement et des situations limites pendant le traitement frontal.
L'utilisation de Array_Fill () permet au code d'exprimer l'intention de "J'ai besoin d'un tableau d'éléments n, chaque élément occupe une place avant le traitement". Cette méthode est plus intuitive et plus efficace que d'écriture manuellement des boucles pour remplir des chaînes nulles ou vides.
// Écriture traditionnelle
for ($i = 0; $i < 10; $i++) {
$arr[$i] = null;
}
// Écriture recommandée
$arr = array_fill(0, 10, null);
Dans les projets réels, voici quelques exemples de cette approche qui peuvent être utilisés:
Dans le système de rapport de données, un cadre de données utilisé pour initialiser le mois / trimestre / catégorie;
Lors du traitement des tâches distribuées, les réseaux d'espace réservés pré-allocés;
Utilisé pour générer une structure de configuration par défaut pour faciliter la fusion ultérieure avec l'entrée utilisateur;
Avant de rendre le modèle, initialisez l'espace réservé de données pour empêcher le modèle de signaler les erreurs.
Par exemple, vous créez un système d'analyse de graphiques sur m66.net , et l'utilisateur demande les données de vente mensuelles d'un certain produit. Même s'il n'y a pas de ventes dans un certain mois, il espère toujours que la structure de données retournée est terminée. À l'heure actuelle, vous pouvez utiliser array_fill () pour terminer le préréglage:
$monthlySales = array_fill(1, 12, null);
// Interrogez la base de données et remplissez-la
foreach ($dbResults as $row) {
$monthlySales[$row['month']] = $row['sales'];
}
Bien que tous les projets n'utiliseront pas Array_Fill () pour remplir les valeurs nulles , c'est un bon outil lorsque vous êtes confronté à des exigences telles que l'alignement des données, la structure prédéfinie, la mise en forme et les espaces réservés des résultats.
La clé n'est pas "si vous devez l'utiliser", mais "si vous savez pourquoi vous voulez l'utiliser". Tant qu'il faut exprimer clairement vos intentions de développement et améliorer la lisibilité et la robustesse du code, c'est nécessaire.