Manipulation d’index en parcourant un tableau PHP

Manipuler efficacement des tableaux en PHP, en gérant astucieusement les index.

→ Challenge Correction: Affaire BL4CKWELL – Docteure Synapse

Pour ce second challenge, il fallait identifier des timestamps qui créaient des intervalles irréguliers. L’occasion idéale pour mettre en pratique une manipulation efficace des index des tableaux en PHP.

Analyse de l’énoncé

Comme souvent dans les challenges Tainix, une bonne analyse de l’énoncé permet de simplifier le code et la logique à implémenter.

L’énoncé précise clairement que le premier timestamp est toujours correct. En conséquence, l’intervalle régulier de la série se déduit facilement des deux premiers timestamps fournis :

$ecart = $timestamps[1] - $timestamps[0];

Cette ligne permet d’obtenir immédiatement l’intervalle régulier attendu entre chaque timestamp, celui qui nous servira de contrôle pour la suite.

Parcourir le tableau PHP avec une boucle for et utiliser les index

Une boucle for permet de parcourir facilement le tableau, tout en comparant chaque élément avec son prédécesseur grâce aux index :

// Initialisation des éléments de la réponse
$results = [];

// On compte le nombre d'éléments
$nbTimestamps = count($timestamps);

// Boucle for
for ($i = 2; $i < $nbTimestamps; $i++) {
    
    // Contrôle et stockage de la réponse
    if ($timestamps[$i] - $timestamps[$i-1] != $ecart) {
        $results[] = $timestamps[$i];
    }
}

Un peu d’explications :

  • On initialise un tableau $results pour stocker les timestamps incorrects
  • On compte le nombre d’éléments avant la boucle, pour éviter de répéter le count dans la boucle (c’est une bonne pratique)
  • On utilise une boucle for, avec un index qui démarre à 2 et, dans la boucle, on cherche l’élément $i-1, ce qui veut dire qu’on va contrôler :
    • L’élément 2 avec l’élément 1
    • L’élément 3 avec l’élément 2
    • L’élément 4 avec l’élément 3
    • Et ainsi de suite…
    • Pas besoin de tester 1 et 0 puisqu’on s’en est servi pour calculer l’écart de référence
  • Si l’écart calculé diffère de l’écart de référence, on stocke le timestamp dans $results

Découper le tableau PHP pour afficher le résultat

On peut afficher le résultat de cette façon :

// Utilisation des index
echo $results[0] . '_' . $results[1];

Ou avec des fonctions PHP natives :

// Utilisation de implode et array_slice
echo implode('_', array_slice($results, 0, 2));

Cette approche directe et concise met clairement en évidence l’importance de la gestion des indices lors de la manipulation de tableaux en PHP. Elle offre une solution facile à comprendre et particulièrement efficace pour ce type de challenge.


Qui a codé ce superbe contenu ?

Keep learning

Other content to discover