Dans PHP, Array_Column () est une fonction très courante qui permet d'extraire des données d'une colonne spécifiée à partir d'un tableau multidimensionnel et de le renvoyer. Cette fonction est particulièrement adaptée au traitement des résultats de la requête de la base de données ou des tableaux similaires aux données structurées. En spécifiant la clé de la colonne, Array_Column () peut facilement extraire toutes les données d'un tableau d'un tableau.
Cependant, de nombreux développeurs peuvent rencontrer un problème: que se passe-t-il si les clés d'index d'un tableau sont répétées lors de l'utilisation de Array_Column () ? Dans cet article, nous explorerons ce problème et fournirons des solutions.
L'utilisation de base de la fonction Array_Column () est la suivante:
array_column(array $input, $column_key, $index_key = null): array
$ Entrée : le tableau à deux dimensions d'entrée.
$ Column_Key : le nom de clé de la colonne à extraire ou l'index de la colonne.
$ index_key : facultatif. Vous pouvez spécifier la clé d'index qui renvoie le tableau.
Cette fonction extrait les données basées sur la clé de colonne donnée $ Column_Key et renvoie un nouveau tableau. Si $ index_key est spécifié, le tableau renvoyé utilisera cette touche comme index.
Par exemple:
$data = [
['id' => 1, 'name' => 'Alice', 'age' => 23],
['id' => 2, 'name' => 'Bob', 'age' => 24],
['id' => 3, 'name' => 'Charlie', 'age' => 25],
];
$names = array_column($data, 'name'); // ['Alice', 'Bob', 'Charlie']
Lorsque le paramètre $ index_key est spécifié, Array_Column () renvoie un nouveau tableau à l'aide de la valeur $ index_key comme index. Si la touche $ index_key dans le tableau d'entrée est répétée, la valeur suivante écrase la valeur précédente. Cette situation confond souvent les développeurs car certaines données peuvent être perdues.
Jetons un coup d'œil à un exemple:
$data = [
['id' => 1, 'name' => 'Alice', 'age' => 23],
['id' => 2, 'name' => 'Bob', 'age' => 24],
['id' => 1, 'name' => 'Charlie', 'age' => 25], // id répéter
];
$result = array_column($data, 'name', 'id');
print_r($result);
Sortir:
Array
(
[1] => Charlie
[2] => Bob
)
Dans le code ci-dessus, en raison de la duplication de la touche ID (valeur d'ID est 1), seul "Charlie" est conservé dans le tableau retourné et la valeur "Alice" d'origine est écrasée. C'est ainsi que Array_Column () se comporte lors de la rencontre des index en double.
Dans certains cas, nous voulons peut-être conserver tous les index en double au lieu de les remplacer. À ce stade, nous pouvons utiliser quelques astuces pour faire face à cette situation:
Un moyen facile consiste à traiter manuellement l'index en double après que la fonction array_column () renvoie le résultat. Par exemple, nous pouvons utiliser array_merge () pour fusionner les valeurs avec le même index dans un tableau.
$data = [
['id' => 1, 'name' => 'Alice', 'age' => 23],
['id' => 2, 'name' => 'Bob', 'age' => 24],
['id' => 1, 'name' => 'Charlie', 'age' => 25], // id répéter
];
$column = array_column($data, 'name', 'id');
// 处理répéter索引,确保所有répéter的值被保留
$column = array_map(function($v) {
return is_array($v) ? $v : [$v];
}, $column);
print_r($column);
Sortir:
Array
(
[1] => Array
(
[0] => Alice
[1] => Charlie
)
[2] => Array
(
[0] => Bob
)
)
Dans cet exemple, nous utilisons array_map () pour convertir chaque valeur en un tableau, ce qui garantit que toutes les valeurs sont conservées.
Si nous voulons fusionner toutes les valeurs en double dans un tableau, nous pouvons également le faire en faisant une manipulation sur le tableau. Par exemple, le code suivant utilise Array_merge pour fusionner les index en double:
$data = [
['id' => 1, 'name' => 'Alice', 'age' => 23],
['id' => 2, 'name' => 'Bob', 'age' => 24],
['id' => 1, 'name' => 'Charlie', 'age' => 25], // id répéter
];
$result = [];
foreach ($data as $item) {
$result[$item['id']][] = $item['name'];
}
print_r($result);
Sortir:
Array
(
[1] => Array
(
[0] => Alice
[1] => Charlie
)
[2] => Array
(
[0] => Bob
)
)
De cette façon, nous pouvons contrôler manuellement comment gérer les index en double sans perdre de données.
Array_Column () est un outil puissant qui peut nous aider à extraire des données d'une colonne spécifiée à partir d'un tableau. Cependant, lorsqu'il existe des touches d'index en double dans le tableau, les valeurs suivantes écrasent les valeurs précédentes, ce qui peut entraîner une perte de données. Pour gérer cette situation, nous pouvons adopter différentes approches, telles que la fusion des valeurs en double ou l'utilisation d'une fonction de tableau pour traiter davantage le résultat. Selon les besoins spécifiques, le choix de la bonne stratégie pour résoudre le problème des clés d'index en double peut rendre le code plus robuste et fiable.