Lors d’une demande de développement PHP, je devais créer une fonction qui répondait à la question suivante :
Comment insérer un élément au milieu d’un tableau ?
Je n’ai pas trouvé de fonction PHP spécifique à cette demande.
Par contre, j’ai découvert une réponse qui me permettrai de créer une fonction de ce genre.
Le code est le suivant :
//Soit le tableau contenant pomme, poire, pêche, kiwi. On veut insérer abricot au milieu de ce tableau
$tab = array ("pomme", "poire", "pêche", "kiwi");
$tab1 = array_slice ($tab, 0, 2); //Récupère pomme et poire
$tab2 = array_slice ($tab, 2); //Récupère tous les éléments à partir de l'indice 2
array_push ($tab1, "abricot"); //Ajoute à la fin du tableau l'élément abricot
$tab = array_merge ($tab1, $tab2); //Fusionne les deux tableaux
echo '<pre>'; print_r($tab); echo '</pre>';
Pour expliquer le code en quelques mots
- on extrait une (ou plusieurs) portion(s) du tableau avec array_slice().
- On empile un ou plusieurs éléments à la fin d’un tableau avec array_push()
- On fusionne un ou plusieurs tableaux avec array_merge().
Cela affiche le tableau suivant :
Array([0] => pomme [1] => poire [2] => abricot [3] => pêche [4] => kiwi)
Voici ce que redonne le même code ci-dessus, mais factoriser dans une fonction.
function add_middle($tab, $add_element, $indice_tab) {
$tab1 = array_slice ($tab, 0, $indice_tab);
$tab2 = array_slice ($tab, $indice_tab);
array_push ($tab1, $add_element);
$tab = array_merge ($tab1, $tab2); //Fusionne les deux tableaux
return $tab;
}
//Soit le tableau contenant pomme, poire, pêche, kiwi.
// On veut insérer abricot au milieu de ce tableau
$tab = array ("pomme", "poire", "pêche", "kiwi");
$add_element = 'abricot';
$tab = function add_middle($tab, 'abricot', 2);
echo '<pre>'; print_r($tab); echo '</pre>';
Que pensez-vous de cette technique ? Et connaissez-vous des fonctions natives permettant de faire ce genre de chose ?
N’hésitez pas à venir le partager avec moi.
PS : Quelques heures après la parution de cet article, Frédéric Bouchery me proposait une solution avec une fonction native en PHP. Je peux le remercier.
Voici cette solution :
<?php
$array = ['pomme', 'poire', 'pêche', 'kiwi'];
array_splice($array, 2, 0, ['abricot']);
print_r($array);
Array
(
[0] => pomme
[1] => poire
[2] => abricot
[3] => pêche
[4] => kiwi
)
Frédéric
12 octobre 2020 à 12 h 03 min
Il y a une fonction qui fait ça 🙂
https://3v4l.org/Uhi3e
guillaume
12 octobre 2020 à 22 h 38 min
Je n’ai pas dû assez rechercher sur la doc de php 😀
Merci 😉