
| auteur : Cyberzoide |
mon tableau de test :
$tab = array(array(5,6,2),array(3,7,1),array(1,5,9),array(3,8,8),array(1,2,3),array(7,4,4),array(4,2,10)); |
deuxième fonction de tri sur le 3ème élément :
function cmp2($a,$b) {
if ($a[2] == $b[2])
return 0;
return ($a[2] > $b[2]) ? -1 : 1;
} |
Le signe supérieur > permet de faire un tri décroissant ; pour un tri croissant, il faut le changer en <.
première fonction de tri sur le 2ème élément :
function cmp1($a,$b) {
if ($a[1] == $b[1])
return cmp2($a,$b);
return ($a[1] > $b[1]) ? -1 : 1;
} |
De plus, on peut tout-à-fait choisir de faire un tri décroissant sur la deuxième colonne et croissant sur la troisème !
la procédure de tri :
ma fonction d'affichage :
foreach($tab as $elem) {
echo $elem[0], " ", $elem[1], " ", $elem[2], "<br />";
} |
principe : usort trie le tableau $tab avec la fonction cmp1() qui prend pour argument deux entrées du tableau et renvoie 0, -1, +1 selon que la première entrée soit égale, sup ou inf à la deuxième (sur le 2ème élément).
Evidemment, en cas d'égalité on appelle cmp2() pour faire le test sur le 3ème élément.
|
| auteur : Cyberzoide | Si les valeurs sont issues d'une requête MySQL, alors on peut utiliser la fonction RAND() au sein de la clause ORDER BY : SELECT ... FROM ... WHERE ... ORDER BY RAND() |
Sinon, en PHP, la fonction shuffle() mélange les éléments du tableau. Attention à ne pas oublier d'initialiser le générateur de nombre aléatoire avec srand() : |
| auteur : Cyberzoide | Attention, si $tab n'est pas un tableau, count() retourne 1, si $tab n'est pas défini, count() retourne 0.
Attention, avec ces fonctions, une chaîne de caractères n'est pas considérée comme un tableau de caractères.
|
| auteur : Jérôme | De la même façon que l'on supprime une variable scalaire ou un tableau entier, on utilise pour supprimer un élément particulier de tableau la structure du langage unset(). Par exemple si $tab2dim est un tableau à 2 dimensions et que l'on veut supprimer l'élément [4][3], on écrira :
Il est également possible de dépiler le premier élément d'un tableau et de récupérer la valeur de l'élément enlevé en utilisant la fonction array_shift(). Dans le cas d'un tableau non associatif, les éléments sont déplacés vers la gauche, ce qui signifie que l'élément qui avait auparavant l'indice 1 a maintenant l'indice 0, et ainsi de suite.
De la même façon, il existe la fonction array_pop() qui dépile le dernier élément et retourne sa valeur
|
| auteur : Julp | La fonction print_r() permet d'afficher le contenu d'un tableau de dimension quelconque pour le contrèle des données. Autant dire qu'elle est utile pour le développeur PHP pour chercher une erreur de saisie dans un tableau !
Vous pouvez également utiliser la fonction var_dump() qui retourne les informations structurées d'une variable, y compris son type et sa valeur. La même chose que print_r() en plus complet.
|
| auteur : Cyberzoide | On déclare une variable de type tableau via la fonction array() (qui retourne un tableau).
Exemple:
Lors de la déclaration, il est possible d'affecter des valeurs au tableau.
Exemple tableau numérique :
$tab = array("un", "deux", "trois"); |
Exemple tableau associatif :
$tab = array('nom' => "Martin",'prénom' => "Pierre",'email' => "martin.pierre@la-bas.fr"); |
|
| auteur : Cyberzoide | On peut ajouter un élément à la fin d'un tableau comme suit :
On peut ajouter un élément à un indice particulier comme suit :
$tab[$indice-1] = $valeur |
Attention : les indices commencent à zéro (0), ainsi le 10ème élément a pour indice 9.
On peut ajouter un ou plusieurs éléments à la fin d'un tableau avec la fonction array_push(). Cette fonction retourne true si l'opération a réussi, ou false en cas d'échec. Elle prend en paramètre le tableau et un ou plusieurs éléments à lui ajouter. Ces éléments peuvent être de tout type (nombre, chaîne, tableau, objet...) :
|
| auteur : Forum PHP |
Pour insérer un élément au milieu d'un tableau, on utilise
les fonctions array_slice()
qui extrait une portion de tableau,
array_push()
qui empile un ou plusieurs éléments à la fin d'un tableau et
array_merge()
qui fusionne un ou plusieurs tableaux.
Exemple d'utilisation :
Bien sur, on peut insérer un élément à n'importe quelle
position, ce code n'est qu'un exemple.
|
| auteur : Cyberzoide | Un tableau dit "numérique" ne contient pas forcément de valeurs numériques, ce peut être des chaînes de caractères, ou d'autres types encore.
Un tableau numérique est une simple liste énumérative d'éléments, qui peuvent être eux mêmes des tableaux.
Exemples de tableaux numériques :
$tab = array(1, 5, "neuf", "poire", 512);
$tab2 = array($nom, "ton prénom = $prenom", array($email1, $email2)); |
Dans un tableau numérique, les éléments sont référencés par leurs indices :
Un tableau associatif se distingue d'un tableau numérique par la présence de clés qui permettent de référencer les éléments stockés dans le tableau.
Exemple de tableau associatif :
$tab = array("nom" => "Martin", "email" => "martin@ici.fr"); |
Dans un tableau associatif, les éléments sont référencés par leurs clés, c'est là toute la différence avec les tableaux numériques :
|
| auteur : Cyberzoide |
Exemple :
Cet exemple crée un tableau $tab de 100 éléments. Les valeurs sont toutes "toto". Et l'indice de départ est zéro (0).
|
| auteur : Cyberzoide | La fonction array_keys() retourne dans un tableau la liste des clés du tableau associatif passé en argument à la fonction.
Exemple:
$personne = array("nom" => "Martin", "prénom" => "Jacques");
$clefs = array_keys($personne);
|
On peut rajouter un argument optionnel à la fonction array_keys() afin de ne renvoyer que les clés associées à une certaine valeur en particulier.
Exemple:
$tab = array("DRH" => "Jean", "Webmaster" => "Jean", "PDG" => "Bob");
$clefs = array_keys($tab, "Jean");
|
Note : si le tableau passé en argument n'est pas un tableau associatif, mais un tableau numérique, alors les indices seront renvoyés à la place des clés.
|
| auteur : Cyberzoide | La fonction array_values() retourne un tableau numérique contenant la liste des valeurs associées aux clés du tableau associatif passé en argument à la fonction.
Exemple :
$tab = array("moi" => "Bob", "lui" = "Maurice", "elle" => "Hélène");
$valeurs = array_values($tab);
|
|
| auteur : Cyberzoide | Pour "retourner" un tableau, on utilise la fonction array_reverse() qui retourne un nouveau tableau dont l'ordre des éléments est l'inverse de celui du tableau d'origine passé en argument à la fonction.
Exemple d'un tableau numérique :
Exemple d'un tableau associatif :
$tab = array("nom" => "Martin", "email" => "martin@par-ici.fr");
$inverse = array_reverse($tab);
|
|
| auteur : Cyberzoide | La fonction in_array($valeur, $tab) retourne true si la valeur $valeur a été trouvée dans le tableau $tab. Même si le type de la variable $valeur ne correspond pas au type de la valeur trouvée dans $tab.
Exemple :
Pour tenir compte du type de variable et ainsi interdire les casts implicites, il faut ajouter un paramètre booléen optionnel valant true.
Exemple :
|
| auteur : Cyberzoide | Pour rassembler plusieurs tableaux en un seul, on utilise la fonction array_merge() qui retourne un tableau qui est le résultat de la fusion de tous les tableaux passés en paramètre.
Exemple :
$tab1 = array(1, 10 ,53, 102);
$tab2 = array("soleil" => "très chaud", "mercure" => "très pres du soleil", "pluton" => "lointaine et froide");
$total = array_merge($tab1, $tab2); |
Les valeurs sont ajoutées les unes à la suite des autres dans le tableau résultat. Dans le cas où les mêmes clés seraient trouvées dans plusieurs des tableaux d'origine, c'est la dernière valeur rencontrée qui sera prise en compte (car il ne peut pas y avoir de doublons sur les clés).
|
| auteur : Cyberzoide |
La fonction array_rand() retourne l'indice d'une valeur choisie au hasard dans le tableau passé en argument à la fonction.
Exemple :
$tab = ("moi", "lui", "elle", "toi");
$indice = array_rand($tab);
echo $tab[$indice]; |
En passant l'argument optionel $nbr à la fonction, valant le nombre de valeurs à choisir au hasard, la fonction array_rand() retourne un tableau numérique des indices de $nbr valeurs choisies au hasard.
Exemple :
$tab = ("moi", "lui", "elle", "toi");
$indices = array_rand($tab, 2);
foreach($indices as $i) {
echo $tab[$i];
} |
Note : ne pas oublier d'initialiser le générateur de nombres aléatoires avec srand() avant d'utiliser la fonction array_rand().
Exemple : |
| auteur : Cyberzoide | La fonction array_flip() retourne un tableau issu du traitement de celui passé en argument. Le traitement est le suivant : les clés du tableau d'origine sont remplacées par leurs valeurs, et les valeurs, par les clés associées.
Exemple :
$tab = array("nom" => "Martin", "prénom" => "Pierre");
$flip = array_flip($tab);
|
Attention : seules les valeurs dont le type est compatible pour devenir clés seront interchangées avec leurs clés. Ces types sont : entier et chaîne de caractères. Ainsi, les nombres à virgule, les objets et autres... ne seront pas inversés.
De plus, dans le cas où le tableau d'origine possède plusieurs clés dont les valeurs sont identiques, seule la dernière sera utilisée. Ainsi les autres clés seront perdues.
C'est donc une fonction à utiliser avec beaucoup de prudence.
|
| auteur : Cyberzoide |
Exemples :
A noter que isset() renverra false si null est la valeur associée à la clé
|
| auteur : Cyberzoide | Avec la fonction array_unique() qui retourne un tableau issu de celui passé en argument à la fonction, mais sans doublon.
Les clés sont préservées.
Seules les permières instances des valeurs sont conservées.
|
| auteur : Cyberzoide | La fonction range($debut, $fin) retourne un tableau formé de toutes les valeurs entières ou caractères comprises entre $debut et $fin.
Exemple avec des entiers :
Exemple avec des caractères :
$lettres = range('a', 'z');
|
Le pas par défaut est 1. On peut le changer en passant l'argument optionnel $pas à la fonction range().
Exemple avec des entiers :
$entiers = range(0, 50, 10);
|
|
| auteur : Julp | Pour forcer un tableau à commencer avec l'indice 1, il suffit d'attribuer au premier élément du tableau la clé 1 :
$tab = array(1 => "pomme", "cerise");
|
En création dynamique :
...
$tab = array();
$i = 1;
while(condition) {
$tab[$i] = une_valeur;
} |
|
| auteur : Cyberzoide | La fonction explode($delim, $str) permet de scinder la chaîne $str en une multitude de sous-chaînes qui composeront le tableau retourné par la fonction. Les sous-chaînes sont délimitées par le séparateur $delim dans la chaîne $str.
Exemple :
<?
$str = "451;2001;45;987;51";
$tab = explode(";",$str);
print_r($tab);
?> |
Ainsi le tableau $tab contient 5 éléments.
|
| auteur : Kerod |
Il se peut qu'après une opération sur un tableau, celui-ci soit mal indexé.
Dans ce cas, pour recalculer les clés, on utilise la fonction
array_values()
qui retourne les valeurs du tableau en paramètre, après
l'avoir indexé numériquement.
Réorganisation d'un tableau indexé | $tab_init = array([0] => titi [3] => toto [6] => tutu);
$tab_final = array_values($tab_init);
echo '<pre>';
print_r($tab_final);
echo '</pre>'; |
Cette fonction peut aussi être utilisée avec un tableau associatif.
Indexation d'un tableau associatif | $tab_init = array("taille" => "XL", "couleur" => "vert");
$tab_final = array_values($tab_init);
echo '<pre>';
print_r($tab_final);
echo '</pre>'; |
|
| auteur : Forum PHP |
Pour savoir si un élément d'un tableau est inclus dans un
autre tableau, nous pouvons utiliser plusieurs méthodes
dont les suivantes :
-
Avec une boucle for et la fonction
in_array()
qui indique si une valeur appartient à un tableau.
Comparaison effectuée selon la méthode 1 | $tab1 = array(1,5,8,15,35,45);
$tab2 = array(2,6,18,35,50);
for($i = 0; $i < count($tab1); $i++)
{
if (in_array($tab1[$i],$tab2))
{
return (TRUE);
}
} |
-
Avec la fonction
array_intersect()
qui retourne un tableau contenant toutes les valeurs du
premier tableau qui sont présentes dans tous les autres.
Comparaison effectuée selon la méthode 2 | $tab1 = array(1,5,8,15,35,45);
$tab2 = array(2,6,18,35,50);
if(count(array_intersect($tab, $tab2) > 0))
{
return TRUE;
} |
|
Consultez les autres F.A.Q's
Les sources présentés sur cette pages sont libre de droits,
et vous pouvez les utiliser à votre convenance. Par contre cette page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs.
Copyright ©2003
Developpez LLC. Tout droits réservés Developpez LLC.
Aucune reproduction, même partielle, ne peut être faite de ce site et de
l'ensemble de son contenu : textes, documents et images sans l'autorisation
expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans
de prison et jusqu'à 300 000 E de dommages et intérets.
Cette page est déposée à la SACD.
|