Étiquette : array

  • Modifier la valeur d’une ligne d’un tableau si l’une de ses valeurs match avec la regex choisie

    /**
     * Met à jour la valeur et l'URL d'un élément dans un tableau multidimensionnel
     * en utilisant une expression régulière pour la recherche.
     * 
     * @param array $array Le tableau multidimensionnel à parcourir
     * @param string $searchTerm L'expression régulière à utiliser pour la recherche
     * @param string $newValue La nouvelle valeur à assigner à l'index 0
     * @param string $newUrl La nouvelle URL à assigner à l'index 1
     * @param int $index L'index de l'élément à vérifier dans les sous-tableaux
     * @return array Le tableau mis à jour
     */
    function ng1UpdateArrayValueRegex($array, $searchRegex, $newValue, $newUrl, $index = 0) {
    
        foreach ($array as $key => $subarray) {
            // Vérifie si le sous-tableau actuel contient des sous-tableaux
            if (is_array($subarray)) {
                // Parcours tous les éléments du sous-tableau actuel pour trouver une correspondance avec l'expression régulière
                $matched = false;
                foreach ($subarray as $subkey => $value) {
                    // Vérifie si l'élément à l'index $index correspond à l'expression régulière $searchRegex
                    if ($subkey == $index && preg_match($searchRegex, $value)) {
                        $matched = true;
                        break;
                    }
                }
                // Si une correspondance est trouvée, met à jour les valeurs pour l'index 0 et l'index 1
                if ($matched) {
                    $array[$key][0] = $newValue;
                    $array[$key][1] = $newUrl;
                    // Sort de la boucle pour éviter de mettre à jour plusieurs occurrences
                    break;
                } else {
                    // Si le sous-tableau actuel ne contient pas la valeur correspondant à l'expression régulière, appelle la fonction récursivement
                    $array[$key] = ng1UpdateArrayValueRegex($subarray, $searchRegex, $newValue, $newUrl, $index);
                }
            }
        }
        // Retourne le tableau mis à jour
        return $array;
    }
  • Modifier une ligne de tableau en fonction de l’une de ses valeurs

    Mettre à jour la première occurrence d’un sous-tableau contenant le terme de recherche spécifié.

    <?php 
    /**
     * Cette fonction parcourt récursivement un tableau multidimensionnel et met à jour
     * la première occurrence d'un sous-tableau contenant le terme de recherche spécifié.
     *
     * @param array $array     Le tableau à parcourir
     * @param string $newValue La nouvelle valeur pour l'index 0 du sous-tableau
     * @param string $newUrl   La nouvelle valeur pour l'index 1 du sous-tableau
     * @param string $searchTerm Le terme à rechercher dans le tableau
     *
     * @return array           Le tableau mis à jour
     */
    function ng1UpdateArrayValue($array, $searchTerm, $newValue, $newUrl,$index =0) {
        foreach ($array as $key => $subarray) {
            // Vérifie si le sous-tableau actuel contient le terme de recherche spécifié
            if ($subarray[$index] === $searchTerm) {
                // Si c'est le cas, met à jour les valeurs pour l'index 0 et l'index 1
                $array[$key][0] = $newValue;
                $array[$key][1] = $newUrl;
                // Sort de la boucle pour éviter de mettre à jour plusieurs occurrences
                break;
            } elseif (is_array($subarray)) {
                // Si le sous-tableau actuel n'est pas une feuille, appelle la fonction récursivement
                $array[$key] = ng1UpdateArrayValue($subarray, $newValue, $newUrl, $searchTerm,$index);
            }
        }
        // Retourne le tableau mis à jour
        return $array;
    }