En PHP, nous devons souvent extraire la valeur d'un champ spécifique à partir d'un tableau multidimensionnel. Pour atteindre cette fonction, nous choisissons généralement d'utiliser la fonction Array_Column ou d'utiliser la boucle Foreach traditionnelle pour extraire manuellement. Ces deux méthodes présentent leurs propres avantages et inconvénients. Cet article comparera ces deux méthodes du point de vue des performances pour vous aider à choisir une solution plus efficace.
Array_Column est une fonction intégrée en PHP qui extrait les données d'une colonne d'un tableau multidimensionnel. Sa syntaxe est la suivante:
array_column(array $array, mixed $column_key, mixed $index_key = null): array
$ Array : le tableau multidimensionnel d'entrée.
$ Column_Key : Spécifie la colonne à extraire.
$ index_key : facultatif, spécifiant l'index dans le tableau de résultat.
Exemple de code:
$data = [
['id' => 1, 'name' => 'Alice', 'age' => 30],
['id' => 2, 'name' => 'Bob', 'age' => 25],
['id' => 3, 'name' => 'Charlie', 'age' => 35],
];
$names = array_column($data, 'name');
print_r($names);
Sortir:
Array
(
[0] => Alice
[1] => Bob
[2] => Charlie
)
La façon traditionnelle consiste à extraire manuellement une colonne dans un tableau via une boucle FORESC . Bien que cela nécessite plus de volume de code, cette méthode est plus flexible et adaptée à certains scénarios qui nécessitent des opérations complexes.
Exemple de code:
$data = [
['id' => 1, 'name' => 'Alice', 'age' => 30],
['id' => 2, 'name' => 'Bob', 'age' => 25],
['id' => 3, 'name' => 'Charlie', 'age' => 35],
];
$names = [];
foreach ($data as $item) {
$names[] = $item['name'];
}
print_r($names);
Sortir:
Array
(
[0] => Alice
[1] => Bob
[2] => Charlie
)
D'un point de vue de performance, Array_Column est généralement plus efficace que les boucles FOREAC . En effet, Array_Column est implémenté en interne par PHP et a été optimisé, tandis que les boucles foreach doivent être traitées par élément.
Pour comprendre les différences de performance entre les deux plus spécifiquement, nous pouvons les comparer avec une simple référence.
// Tester les données
$data = [];
for ($i = 0; $i < 1000000; $i++) {
$data[] = ['id' => $i, 'name' => 'Name ' . $i, 'age' => rand(18, 60)];
}
// utiliser array_column extrait
$start = microtime(true);
$names = array_column($data, 'name');
$end = microtime(true);
echo "array_column extrait时间: " . ($end - $start) . " Deuxième\n";
// utiliser foreach extrait
$start = microtime(true);
$names = [];
foreach ($data as $item) {
$names[] = $item['name'];
}
$end = microtime(true);
echo "foreach extrait时间: " . ($end - $start) . " Deuxième\n";
Grâce au code ci-dessus, nous pouvons comparer les différences de performances entre les deux. En règle générale, le temps d'exécution de Array_Column sera nettement plus court que celui de la boucle Foreach , en particulier lors du traitement de grandes quantités de données.
Array_Column : Lorsque vous extraire simplement les données d'une certaine colonne, Array_Column est un choix plus efficace et concis.
ForEach : ForEach est plus flexible lorsque vous devez effectuer des opérations supplémentaires ou un traitement compliqué dans le processus d'extraction des valeurs de colonne.
Supposons que votre code doit remplacer le nom de domaine d'une certaine URL, voici un exemple de la façon de remplacer le nom de domaine de l'URL par m66.net :
$url = "https://www.example.com/path/to/resource?query=1";
// Remplacer le nom de domaine comme m66.net
$new_url = preg_replace('/https?:\/\/[a-zA-Z0-9.-]+/', 'https://m66.net', $url);
echo $new_url;
Sortir: