Cours ⇒ Cour PHP facebook twitter youtube

Les tableaux ⇒ & Manipuler des tableaux



 

 

1-la fonction array_slice()

qui permet d’effectuer
divers types d’extractions.
La syntaxe de la fonction array_slice() est la suivante :

$sous_tab = array_slice(array $tab,int ind, int nb)

Cette fonction ne modifie pas le tableau initial mais retourne le sous-tableau dans la
variable $sous_tab.Par exemple, array_slice($tab,2,3) retourne un tableau comprenant trois éléments
extraits à partir de l’indice 2. Il contient donc les éléments d’indice 2, 3 et 4 du tableau
$tab.

Si le paramètre ind est négatif et que nb est positif, le compte des éléments se fait en
partant de la fin du tableau $tab, le dernier se trouvant affecté virtuellement de l’indice
–1, l’avant-dernier de l’indice –2, et ainsi de suite. Le paramètre nb désigne encore le
nombre d’élément à extraire.
Par exemple, array_slice($tab,–5,4) retourne quatre éléments de $tab extraits en
commençant au cinquième à partir de la fin.
• Si ind est positif et nb négatif, le tableau $sous_tab contient les éléments de $tab
extraits en commençant à l’indice ind et en s’arrêtant à celui qui a l’indice négatif
virtuel nb (toujours en commençant par la fin).
Par exemple, array_slice($tab,2,–4) retourne tous les éléments à partir de l’indice 2
jusqu’à la fin, sauf les quatre derniers.
• Si ind et nb sont négatifs, le tableau $sous_tab contient les éléments de $tab extraits en
commençant à l’indice négatif ind et en s’arrêtant à celui d’indice négatif nb.
Par exemple, array_slice($tab,–5,–2) retourne trois éléments compris entre les indices
virtuels –5 compris et –2 non compris.
La mise en pratique de l’exemple 5-14 donne deux types d’utilisation de la fonction
array_slice(). Le premier n’utilise que des paramètres positifs et s’applique à un tableau
multidimensionnel dont les éléments sont des tableaux indicés ou associatifs. Le second
envisage toutes les possibilités de valeurs pour les paramètres ind et nb en les appliquant
à un tableau simple.

Utilisation de la fonction array_slice()

";
$tab= array("UN"=>range(1,5),"DEUX"=>range("a","c"),range("A","E"),range(11,15));
echo "Structure du tableau initial :
";
print_r($tab);
echo "

"; $soustab = array_slice($tab,1,2); echo"array_slice(\$tab,1,2) donne : "; print_r($soustab); echo "
"; echo"Exemple 2
"; $heros= array("Spock","Batman","Dark Vador","Hal","Frodo","Sky Walker","Amidala", "Alien"); echo "Structure du tableau initial :
"; print_r($heros); echo "
"; //Extrait des 5 premiers echo "array_slice(\$heros,0,5)"; $prem=array_slice($heros,0,5); print_r($prem); echo "
"; //Extrait des 5 derniers (le dernier est considéré comme ayant l'indice –1 et non pas 0) $der=array_slice($heros,–5,5); echo"array_slice(\$heros,–5,5) "; print_r($der); echo "
"; //Extrait de 3 noms en commençant à la position –5 $der=array_slice($heros,–5,3); echo"array_slice(\$heros,–5,3) "; print_r($der); echo "
"; //Extrait des éléments de l'indice 1 jusqu'à la fin hormis les deux derniers $der=array_slice($heros,1,–2); echo"array_slice(\$heros,1,–2) "; print_r($der); echo "
"; //Extrait des éléments de l'indice –5 jusqu'à la fin hormis les deux derniers $der=array_slice($heros,–5,–2); echo"array_slice(\$heros,–5,–2) "; print_r($der); echo "
"; ?>

Le listing de l’exemple 5-14 affiche le résultat suivant :
Exemple 1
Structure du tableau initial :
Array ( [UN] => Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 ) [DEUX] =>
Array ( [0] => a [1] => b [2] => c ) [0] => Array ( [0] => A [1] => B [2] => C [3] =>
D [4] => E ) [1] => Array ( [0] => 11 [1] => 12 [2] => 13 [3] => 14 [4] => 15 ) )
array_slice($tab,1,2) donne : Array ( [DEUX] => Array ( [0] => a [1] => b [2] => c )
[0] => Array ( [0] => A [1] => B [2] => C [3] => D [4] => E ) )
Exemple 2
Structure du tableau initial :
Array ( [0] => Spock [1] => Batman [2] => Dark Vador [3] => Hal [4] => Frodo [5] =>
Sky Walker [6] => Amidala [7] => Alien )
array_slice($heros,0,5)Array ( [0] => Spock [1] => Batman [2] => Dark Vador [3] =>
Hal [4] => Frodo )
array_slice($heros,–5,5) Array ( [0] => Hal [1] => Frodo [2] => Sky Walker [3] =>
Amidala [4] => Alien )
array_slice($heros,–5,3) Array ( [0] => Hal [1] => Frodo [2] => Sky Walker )
array_slice($heros,1,–2) Array ( [0] => Batman [1] => Dark Vador [2] => Hal [3] =>
Frodo [4] => Sky Walker )
array_slice($heros,–5,–2) Array ( [0] => Hal [1] => Frodo [2] => Sky Walker )


Ajouter et enlever des éléments

La fonction :


int array_push($tab, valeur1, valeur2,…, valeurN)

Pour ajouter des éléments au début d’un tableau, vous pouvez utiliser la fonction suivante :

int array_unshift($tab, valeur1, valeur2,…, valeurN)

vous pouvez supprimer des éléments d’un tableau à l’aide de la fonction
suivante :

array_pop($tab)

vous pouvez supprimer des éléments d’un tableau à l’aide de la fonction
suivante :


array_pop($tab)

qui supprime le dernier élément du tableau $tab et retourne cet élément s’il existe ou la
valeur NULL dans le cas contraire, par exemple si le tableau est vide ou si le paramètre
$tab n’est pas de type array. Avec les fonctions array_push() et array_pop(), le tableau
se comporte comme une pile dotée respectivement de fonctions d’empilement et de
dépilement.

Pour supprimer le premier élément d’un tableau, utilisez la fonction suivante :

array_shift($tab)

 Exemple . Ajout et suppression d’éléments

";
//Ajout au début du tableau
$poitiers=732;
$nb=array_unshift($tab,500,$poitiers);
echo "Le tableau \$tab a maintenant $nb éléments 
";
print_r($tab);
echo "

"; //Ajout à la fin du tableau $armi=1918; $newnb=array_push($tab,1870,1914,$armi); echo "Le tableau \$tab a maintenant $newnb éléments
"; print_r($tab); echo "
"; //Suppression du dernier élément $suppr= array_pop($tab); echo "Le tableau \$tab a perdu l'élément $suppr
"; print_r($tab); echo "
"; //Suppression du premier élément $suppr= array_shift($tab); echo "Le tableau \$tab a perdu l'élément $suppr
"; print_r($tab); echo "
"; //Suppression de l'élément d'indice 4 unset($tab[4]); print_r($tab); ?>

Le résultat du listing de l’exemple 5-15 permet de suivre l’évolution du tableau initial au
fur et à mesure des modifications opérées :
Array ( [0] => 800 [1] => 1492 [2] => 1515 [3] => 1789 )
Le tableau $tab a maintenant 6 éléments
Array ( [0] => 500 [1] => 732 [2] => 800 [3] => 1492 [4] => 1515 [5] => 1789 )
Le tableau $tab a maintenant 9 éléments
Array ( [0] => 500 [1] => 732 [2] => 800 [3] => 1492 [4] => 1515 [5] => 1789 [6] =>
1870 [7] => 1914 [8] => 1918 )
Le tableau $tab a perdu l'élément 1918
Array ( [0] => 500 [1] => 732 [2] => 800 [3] => 1492 [4] => 1515 [5] => 1789 [6] =>
1870 [7] => 1914 )
Le tableau $tab a perdu l'élément 500
Array ( [0] => 732 [1] => 800 [2] => 1492 [3] => 1515 [4] => 1789 [5] => 1870 [6] =>
1914 )
L'élément d'indice 4 a été supprimé
Array ( [0] => 732 [1] => 800 [2] => 1492 [3] => 1515 [5] => 1870 [6] => 1914 )


Trier les éléments d’un tableau

Les fonctions de tri dans l’ordre ASCII proposées par PHP sont les suivantes :
• array sort($tab). Trie les valeurs du tableau $tab en ordre croissant des codes ASCII
des caractères qui les composent (donc en tenant compte de la casse des caractères).
Les correspondances entre les indices et les valeurs des éléments sont perdues après
le tri.

• array rsort($tab). Trie les valeurs du tableau $tab en ordre décroissant des codes
ASCII des caractères qui les composent. Les correspondances entre les indices et les
valeurs des éléments sont perdues après le tri.
• array array_reverse($tab). Inverse l’ordre des valeurs des éléments de $tab. Les indices
sont évidemment perdus.
L’exemple 5-18 illustre l’emploi de ces fonctions et affiche le tableau initial puis le
tableau une fois trié.


 Exemple . Tri selon l’ordre ASCII

Tableau indicé d'origine
";
print_r($tabind);
//Fonction sort()
echo "

Tri en ordre ASCII sans sauvegarde des indices
"; $tabind=$copie; sort($tabind); print_r($tabind); //Fonction rsort() echo "
Tri en ordre ASCII inverse sans sauvegarde des indices
"; $tabind=$copie; rsort($tabind); print_r($tabind); //Fonction array_reverse() echo "
Inversion de l'ordre des éléments
"; $tabind=$copie; $tabrev=array_reverse($tabind); print_r($tabrev); ?>

Trier selon l’ordre naturel


L’ordre dit naturel est plus proche de ce que chacun connaît dans la vie courante. Par
exemple, pour un tri en ordre croissant, la chaîne "Blanc10" se trouve après "Blanc2" et
"1ZZ" avant "2AA", les chiffres étant considérés comme précédant les lettres.
Il existe deux variantes de fonctions de tri selon l’ordre naturel, suivant qu’il est tenu
compte ou non de la casse des caractères :
• array natsort($tab). Trie les valeurs du tableau $tab selon l’ordre naturel croissant des
caractères qui les composent. Le tri étant effectué en tenant compte de la casse, les
majuscules sont placées avant les minuscules, par exemple "Vert" avant "rouge". Les
correspondances entre les indices ou les clés et les valeurs des éléments sont sauvegardées
après le tri, ce qui rend la fonction également applicable aux tableaux associatifs.
• array natcasesort($tab). Trie les valeurs du tableau $tab selon l’ordre naturel croissant,
sans tenir compte de la casse, ce qui correspond davantage à l’ordre courant du
dictionnaire, dans lequel "rouge" se trouve avant "Vert". Les correspondances entre
les indices ou les clés et les valeurs des éléments sont sauvegardées après le tri.

Tableau indicé d'origine
";
print_r($tabind);
//********************************
echo "

Tri en ordre naturel avec sauvegarde des indices
"; $tabind=$copie; natsort($tabind); print_r($tabind); //******************************** echo "
Tri en ordre naturel insensible à la casse avec sauvegarde des indices
"; $tabind=$copie; natcasesort($tabind); print_r($tabind); foreach ($tabind as $cle=>$val) { echo "$cle => $val
"; } ?>

Exemple 5-20. Tri personnalisé

 

strlen($mot2)) return –1;
else return 1;
}
//Tableau à trier
$tab=array("Blanc","Jaune","rouge","Vert","Orange","Noir","Emeraude");
//Utilisation de la fonction de tri
echo "Tri selon la longueur des chaînes de caractères
";
echo "Tableau initial
";
print_r($tab);
usort($tab,"long");
echo "
Tableau trié selon la longueur croissante des mots
";
print_r($tab);
?>

Mélanger les valeurs de façon aléatoire

 Tableau initial";
print_r($tab);
echo "

Mélange en ordre aléatoire

"; //Initialisation du générateur de nombres aléatoires srand(time()); //Mélange des éléments puis affichage du tableau shuffle($tab); print_r($tab); ?>

 


Changer le fond
Oregionale Skin
7astuces
Sélectionnez un Fond (11)
7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces
Fond de contenu
7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces