/**
* 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;
}Étiquette : recursive
-
Modifier la valeur d’une ligne d’un tableau si l’une de ses valeurs match avec la regex choisie
-
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; }