Position actuelle: Accueil> Derniers articles> La différence entre Array_Column et les tableaux d'index numériques, pourquoi fonctionnent-ils différemment?

La différence entre Array_Column et les tableaux d'index numériques, pourquoi fonctionnent-ils différemment?

M66 2025-04-28

Dans PHP, Array_Column est une fonction très utile, en particulier lorsqu'il s'agit de tableaux multidimensionnels. Il peut extraire la valeur d'une colonne d'un tableau bidimensionnel et renvoyer un nouveau tableau. Cependant, lorsque vous utilisez Array_Column sur différents types de tableaux (tels que les tableaux d'index numériques et les tableaux associatifs), vous pouvez constater qu'ils ne se comportent pas exactement de la même manière. Alors, pourquoi y a-t-il une telle différence?

Utilisation de réseaux d'index numériques

Un tableau d'index numérique est l'un des types de tableaux les plus basiques, et chaque élément a un indice incrémentiel (par exemple, 0, 1, 2, etc.). En PHP, les tableaux d'index numériques sont généralement organisés dans l'ordre.

Exemple:

 $array = [
    ['id' => 1, 'name' => 'Tom'],
    ['id' => 2, 'name' => 'Jerry'],
    ['id' => 3, 'name' => 'Spike']
];

$names = array_column($array, 'name');
print_r($names);

Sortir:

 Array
(
    [0] => Tom
    [1] => Jerry
    [2] => Spike
)

Dans l'exemple ci-dessus, Array_Column extrait la valeur correspondant à la clé de nom de chaque élément du tableau et renvoie un tableau d'index numériques. Étant donné que le tableau d'origine est un tableau associatif, les valeurs seront extraites dans l'ordre lorsqu'ils sont traités par array_column .

Utilisation de tableaux associatifs

Contrairement aux réseaux d'index numériques, chaque élément d'un tableau associatif a une clé spécifiée au lieu de l'index numérique par défaut. Lorsque vous utilisez Array_Column pour les tableaux associatifs, les performances seront différentes.

Exemple:

 $array = [
    ['id' => 1, 'name' => 'Tom'],
    ['id' => 2, 'name' => 'Jerry'],
    ['id' => 3, 'name' => 'Spike']
];

$names = array_column($array, 'name', 'id');
print_r($names);

Sortir:

 Array
(
    [1] => Tom
    [2] => Jerry
    [3] => Spike
)

Dans cet exemple, en plus d'extraire la valeur de la colonne de nom , Array_Column utilise également la valeur de la colonne ID comme clé du nouveau tableau. Par conséquent, ce qui est renvoyé est un tableau associatif dont la clé provient de la valeur d'ID du tableau d'origine.

Pourquoi fonctionnent-ils différemment?

  1. Tableau d'index de numéro:
    Lorsque Array_Column fonctionne sur un tableau d'index numérique, un nouveau tableau d'index sera généré en fonction de l'ordre du tableau d'origine. Les clés de chaque nouveau tableau sont générées automatiquement et incrémentées à partir de 0.

  2. Tableau associatif:
    Lorsque le tableau d'origine est un tableau associatif, Array_Column conservera la clé du tableau d'origine, ou si une clé différente est spécifiée (comme l'ID ci-dessus), cette clé spécifiée sera utilisée comme clé du nouveau tableau.

  3. Spécifiez l'index:
    Array_Column vous permet de spécifier une colonne de tableau en tant qu'index. Cela signifie que vous pouvez non seulement extraire les valeurs d'une colonne spécifique, mais également contrôler les clés qui renvoient le tableau. Ceci est très utile pour construire des tableaux avec des valeurs de clés spécifiques, en particulier lorsque vous devez indexer les données par des champs spécifiques.

Résumer

Le comportement de Array_Column dans les réseaux d'index numériques et les tableaux associatifs est différent, principalement reflété dans la valeur de clé du tableau renvoyé. Pour les réseaux d'index numériques, il utilise des index numériques par défaut; Pour les tableaux associatifs, il conserve l'index d'origine ou utilise la colonne d'index que vous avez spécifiée. Comprendre ces différences peut vous aider à mieux utiliser cette fonction dans le développement réel et à éviter les résultats non satisfaits.