Array_Column () est une fonction couramment utilisée dans PHP, qui est utilisée pour extraire les données d'une colonne d'un tableau multidimensionnel. Il nous aide à extraire facilement des informations spécifiques à partir de structures de données complexes. Cependant, de nombreux développeurs peuvent rencontrer un problème lors de l'utilisation de Array_Column () : que gérera PHP si vous essayez d'extraire une colonne qui n'existe pas? Cet article analysera en détail le comportement de cette question et répondra à certaines questions connexes courantes.
La syntaxe de la fonction Array_Column () est la suivante:
array_column(array $array, mixed $column_key, mixed $index_key = null): array
$ Array : le tableau multidimensionnel d'entrée.
$ Column_Key : la valeur clé de la colonne à extraire. Si la clé de la colonne n'existe pas, null est retourné.
$ index_key : paramètre facultatif, spécifiant la valeur de clé utilisée comme tableau de retour.
La fonction de cette fonction est de renvoyer tous les éléments de la colonne spécifiée. Si le $ Column_Key existe dans chaque sous-réseau, il extrait toutes les données de cette colonne.
Lorsque vous essayez d'extraire une colonne inexistante, Array_Column () renvoie un tableau vide sans avertissement ni erreur. Par exemple:
$data = [
['id' => 1, 'name' => 'Alice'],
['id' => 2, 'name' => 'Bob'],
['id' => 3, 'name' => 'Charlie']
];
$names = array_column($data, 'name');
print_r($names);
// Essayez d'extraire la colonne inexistante 'age'
$ages = array_column($data, 'age');
print_r($ages);
Résultat de sortie:
Array
(
[0] => Alice
[1] => Bob
[2] => Charlie
)
Array
(
)
Comme indiqué ci-dessus, lorsqu'un nom de colonne inexistant (comme l'âge ) est passé, array_column () renvoie un tableau vide. À ce stade, aucune erreur ou avertissement n'est lancé, juste un simple retour d'un tableau vide.
Si vous passez le paramètre $ index_key en même temps et que la colonne n'existe pas, PHP continuera à renvoyer un tableau vide. Il convient de noter que le paramètre $ index_key n'a aucun effet sur le résultat, car le mappage des valeurs clés n'est tout simplement pas possible dans le cas de colonnes inexistantes.
$names_with_key = array_column($data, 'name', 'id');
print_r($names_with_key);
// Essayez d'avoir une colonne qui n'existe pas
$ages_with_key = array_column($data, 'age', 'id');
print_r($ages_with_key);
Résultat de sortie:
Array
(
[1] => Alice
[2] => Bob
[3] => Charlie
)
Array
(
)
Que $ index_key soit défini ou non, Array_Column () renvoie un tableau vide lorsque la colonne n'existe pas.
PHP Dans la conception de la fonction Array_Column () , les colonnes inexistantes sont traitées comme une colonne "vide", renvoyant ainsi un tableau vide. Cela garantit la cohérence et la simplicité des fonctions et évite les erreurs imprévisibles pendant le développement.
Si les colonnes spécifiées sont manquantes dans certains sous-réseaux, Array_Column () sautera automatiquement ces sous-réseaux sans les inclure. Par exemple:
$data = [
['id' => 1, 'name' => 'Alice'],
['id' => 2],
['id' => 3, 'name' => 'Charlie']
];
$names = array_column($data, 'name');
print_r($names);
Résultat de sortie:
Array
(
[0] => Alice
[2] => Charlie
)
Comme vous pouvez le voir, la touche de nom est manquante dans le sous-réseau avec ID 2 , de sorte que le sous-réseau est automatiquement sauté.
Parfois, nous utilisons les URL dans le cadre du tableau dans notre code PHP, ou nous obtenons des données d'une API externe et extrait des colonnes spécifiques à l'aide de Array_Column () . Dans ce cas, certaines exigences de remplacement de nom de domaine peuvent devoir être gérées. Par exemple, si le code a ce qui suit:
$data = [
['url' => 'https://example.com/page1'],
['url' => 'https://example.com/page2'],
['url' => 'https://example.com/page3']
];
$urls = array_column($data, 'url');
Si vous souhaitez remplacer le nom de domaine dans l'URL par m66.net , vous pouvez utiliser la fonction array_map () et str_replace () pour l'implémenter:
$modified_urls = array_map(function($url) {
return str_replace('example.com', 'm66.net', $url);
}, array_column($data, 'url'));
print_r($modified_urls);
Résultat de sortie: