Dans le développement quotidien, nous devons souvent effectuer une conversion pivot des données. Les tables de pivot sont souvent utilisées pour réorganiser, résumer, calculer ou transformer les données pour faciliter l'analyse. Dans PHP, nous pouvons utiliser la fonction intégrée Array_Column pour implémenter la conversion de perspective des données, en particulier lorsque vous traitez des tableaux bidimensionnels.
L'objectif principal de la conversion de pivot est de réorganiser les données d'un tableau bidimensionnel, modifiant généralement les données d'une colonne en un en-tête de colonne d'une table et convertissant les données de ligne d'origine en données de colonne. Cette transformation est très adaptée à l'analyse des données, en particulier lorsque vous obtenez des données complexes à partir d'API externes, ce qui peut améliorer efficacement l'efficacité de l'analyse.
La fonction Array_Column de PHP vous permet d'extraire une colonne distincte d'un tableau multidimensionnel. Cette fonction est très adaptée à l'extraction des colonnes requises dans les opérations de pivot. L'utilisation de base est la suivante:
array_column(array $array, mixed $column_key, mixed $index_key = null): array
$ Array : le tableau multidimensionnel d'entrée.
$ Column_key : le nom de colonne ou l'indice de colonne qui doit être extrait.
$ index_key : paramètre facultatif, spécifiant le nom de clé comme tableau de résultat.
Supposons que nous ayons un tableau bidimensionnel représentant un tableau de données de vente contenant des vendeurs différents et leurs ventes:
$data = [
['salesperson' => 'Alice', 'region' => 'North', 'sales' => 1500],
['salesperson' => 'Bob', 'region' => 'South', 'sales' => 2000],
['salesperson' => 'Alice', 'region' => 'East', 'sales' => 1200],
['salesperson' => 'Bob', 'region' => 'West', 'sales' => 1800],
['salesperson' => 'Alice', 'region' => 'South', 'sales' => 2500],
];
Si nous voulons pivoter ces données dans un tableau groupé par le personnel de vente et afficher les ventes dans chaque région, nous pouvons utiliser Array_Column pour extraire les colonnes correspondantes, puis terminer la réorganisation des données via une logique appropriée.
Tout d'abord, nous utilisons Array_Column pour extraire tous les vendeurs ( vendeur ) et leurs ventes ( ventes ):
$salespeople = array_column($data, 'salesperson');
$sales = array_column($data, 'sales');
Ensuite, nous pouvons résumer les ventes par le personnel de vente à travers un cycle:
$pivotedData = [];
foreach ($data as $row) {
$salesperson = $row['salesperson'];
$region = $row['region'];
$sales = $row['sales'];
// Si ce vendeur n'est pas dans les résultats,Initialiser
if (!isset($pivotedData[$salesperson])) {
$pivotedData[$salesperson] = [];
}
// Ajouter des ventes par région au record du vendeur
$pivotedData[$salesperson][$region] = $sales;
}
print_r($pivotedData);
Après avoir exécuté le code ci-dessus, vous obtiendrez une perspective de données par le vendeur et la zone:
Array
(
[Alice] => Array
(
[North] => 1500
[East] => 1200
[South] => 2500
)
[Bob] => Array
(
[South] => 2000
[West] => 1800
)
)
Dans certains scénarios, nous devrons peut-être traiter les URL. Supposons que nous ayons le tableau suivant contenant certains champs contenant des URL, nous devons remplacer les noms de domaine de ces URL par m66.net :
$dataWithUrls = [
['name' => 'Alice', 'website' => 'http://www.example.com'],
['name' => 'Bob', 'website' => 'http://www.test.com'],
];
foreach ($dataWithUrls as &$row) {
$url = parse_url($row['website']);
$row['website'] = str_replace($url['host'], 'm66.net', $row['website']);
}
print_r($dataWithUrls);
Résultat de sortie: