OVH Cloud OVH Cloud

Indice de tableaux

12 réponses
Avatar
(¯`·..Yttrium...·´¯)
Bjr,
Soit un tableau :

$tableau

J'affecte à ce tableau les valeurs :
$tableau [0] = "a";
$tableau [15] = "b";
$tableau [56] = "c";
etc..

Lorsque je parcours ce tableau apres avoir trié les clefs par ordre
croissant, , existe t il un moyen de savoir que $tableau [15] est le
troisième élément de ce tableau ?

Merci d'avance.
Salutations.

--
(¯`·..Yttrium ...·´¯)
Pour me répondre en privé: Passez un coup de balai

10 réponses

1 2
Avatar
Kawai
Bjr,
Soit un tableau :

$tableau

J'affecte à ce tableau les valeurs :
$tableau [0] = "a";
$tableau [15] = "b";
$tableau [56] = "c";
etc..

Lorsque je parcours ce tableau apres avoir trié les clefs par ordre
croissant, , existe t il un moyen de savoir que $tableau [15] est le
troisième élément de ce tableau ?

Merci d'avance.
Salutations.


tu mets un compteur dans la boucle qui lit le tableau et le tour est
joué.
$i=1;
foreach ($tableau as $key=>$val) {
echo $key." est le ".$i++."eme element du tableau<br />";
}

--
Kawai ^^
"Si on ne trouve pas de solution à un problème,
c'est que le problème n'existe pas vraiment."

http://kawaitld.free.fr

Avatar
CrazyCat
(¯`·..Yttrium...·´¯) wrote:
J'affecte à ce tableau les valeurs :
$tableau [0] = "a";
$tableau [15] = "b";
$tableau [56] = "c";
etc..

Lorsque je parcours ce tableau apres avoir trié les clefs par ordre
croissant, , existe t il un moyen de savoir que $tableau [15] est le
troisième élément de ce tableau ?


tout d'abord, il s'agit du deuxième élément, et c'est le deuxième
élément non plein.

Si tu crées ton tableau ainsi que tu nous le montre, j'ai bien peur
(qu'on m'arrète si je me trompe) que tu n'obtiennes un tableau de 57
lignes dont 3 comporteront autre chose qu'une chaine vide.


--
Découvrez Original War: http://www.original-war.org
Humour: http://www.chatfou.com
Tchattez en liberté: http://www.c-p-f.net

Avatar
Thibault TAILLANDIER
Bjr,
Soit un tableau :

$tableau

J'affecte à ce tableau les valeurs :
$tableau [0] = "a";
$tableau [15] = "b";
$tableau [56] = "c";
etc..

Lorsque je parcours ce tableau apres avoir trié les clefs par ordre
croissant, , existe t il un moyen de savoir que $tableau [15] est le
troisième élément de ce tableau ?


Tout plein de fonctions pour t'aider :
http://fr.php.net/manual/fr/function.array-search.php

Mais si tu tries les clés par ordre croissant, le $tableau[15] est la
2eme clé selon moi ...
Si tu "parcours ce tableau" ... pourquoi ne pas mettre un compteur ?

Et si j'ai mal compris et que tu cherchais ca :
foreach( $tableau as $cle => $value ) {
if ($cle == 15) {
echo "Youpi sur ".current($tableau)." = $value !n";
}
}


Merci d'avance.
Salutations.



Avatar
Olivier Miakinen

J'affecte à ce tableau les valeurs :
$tableau [0] = "a";
$tableau [15] = "b";
$tableau [56] = "c";
etc..

Lorsque je parcours ce tableau apres avoir trié les clefs par ordre
croissant, , existe t il un moyen de savoir que $tableau [15] est le
troisième élément de ce tableau ?


Je ne comprends pas bien ta question puisque, d'après ton exemple,
$tableau[15] est le deuxième élément du tableau (en ignorant les indices
non affectés), et que d'autre part, après tri, l'élément qui était à
l'indice 15 se retrouvera aussi en deuxième position -- sauf si, bien
sûr, tu ajoutes quelque part $tableau[200] = "aa".

Attention néanmoins : une fois que tu auras trié ton tableau, tu auras
ceci :
$tableau [0] = "a";
$tableau [1] = "b";
$tableau [2] = "c";
Il n'y aura donc pas forcément de $tableau[15].

--
Olivier Miakinen
Non, monsieur le juge, je vous le jure : jamais je n'ai cité
Bruxelles dans ma signature.

Avatar
Olivier Miakinen

Si tu crées ton tableau ainsi que tu nous le montre, j'ai bien peur
(qu'on m'arrète si je me trompe) que tu n'obtiennes un tableau de 57
lignes dont 3 comporteront autre chose qu'une chaine vide.


Je t'arrête puisque tu te trompes. Tu as parfaitement le droit de créer
un tableau à trous, et les trous ne seront pas remplis par des chaînes
vides (d'ailleurs pourquoi des chaînes plutôt que des entiers nuls, des
booléens false, des tableaux vides, etc. ?)

--
Olivier Miakinen
Non, monsieur le juge, je vous le jure : jamais je n'ai cité
Bruxelles dans ma signature.

Avatar
CrazyCat
Olivier Miakinen wrote:

Si tu crées ton tableau ainsi que tu nous le montre, j'ai bien peur
(qu'on m'arrète si je me trompe) que tu n'obtiennes un tableau de 57
lignes dont 3 comporteront autre chose qu'une chaine vide.



Je t'arrête puisque tu te trompes. Tu as parfaitement le droit de créer
un tableau à trous, et les trous ne seront pas remplis par des chaînes
vides (d'ailleurs pourquoi des chaînes plutôt que des entiers nuls, des
booléens false, des tableaux vides, etc. ?)


Je me doutais bien que je disais une énormité, mais elle a une certaine
logique.

Si on reprend l'exemple:

$tableau[0] = "a";
$tableau[15] = "b";
$tableau[56] = "c";

et qu'on fait la chose suivante:
for ($i = 0; $i<57; $i++) {
echo $i." : ".$tableau[$i]."<br />n";
}
c'est bien à la ligne numérotée 15 que l'on verra "b" non?

--
Découvrez Original War: http://www.original-war.org
Humour: http://www.chatfou.com
Tchattez en liberté: http://www.c-p-f.net


Avatar
dark poulpo
c'est pas le 3eme, c le 15eme,

ce que tu peux faire car je suis pas sur que les autres éléments non
rensigné soient a 0, c un truc du genre

while (!tableau[++g]) ; pour passer au prochain élément rempli

--
-----
http://dark.freezee.org/
- Dark Update v2.0
- Dark Emule v0.44b r4
- Dark 3D-X 0.7beta
- Dark Shell 1.20
Avatar
Marc
...
c'est bien à la ligne numérotée 15 que l'on verra "b" non?



voici un extrait de code pour te permettre de reflechir :

[ news]$ cat a
array.php array.php~
[ news]$ cat array.php
<?php

$tableau[1] = "a";
$tableau[3] = "b";
$tableau[8] = "c";

print_r($tableau);

error_reporting(E_ALL);

for ($i = 0; $i<10; $i++) {
echo $i." : ".$tableau[$i]."<br />n";
}

?>



[ news]$ php -q array.php
Array
(
[1] => a
[3] => b
[8] => c
)

Notice: Undefined offset: 0 in /home/marc/Dev/php/news/array.php on line 12
0 : <br />
1 : a<br />

Notice: Undefined offset: 2 in /home/marc/Dev/php/news/array.php on line 12
2 : <br />
3 : b<br />

Notice: Undefined offset: 4 in /home/marc/Dev/php/news/array.php on line 12
4 : <br />

Notice: Undefined offset: 5 in /home/marc/Dev/php/news/array.php on line 12
5 : <br />

Notice: Undefined offset: 6 in /home/marc/Dev/php/news/array.php on line 12
6 : <br />

Notice: Undefined offset: 7 in /home/marc/Dev/php/news/array.php on line 12
7 : <br />
8 : c<br />

Notice: Undefined offset: 9 in /home/marc/Dev/php/news/array.php on line 12
9 : <br />

Avatar
G Roydor
Bjr,

Voyez du coté de
foreach ($tableau as $clef => $ valeur) {
echo $clef.$valeur;
}

(¯`·..Yttrium...·´¯) a écrit:
Bjr,
Soit un tableau :

$tableau

J'affecte à ce tableau les valeurs :
$tableau [0] = "a";
$tableau [15] = "b";
$tableau [56] = "c";
etc..

Lorsque je parcours ce tableau apres avoir trié les clefs par ordre
croissant, , existe t il un moyen de savoir que $tableau [15] est le
troisième élément de ce tableau ?

Merci d'avance.
Salutations.



Avatar
Frederic VENDOMELE
Salut,

La fonction array_keys permet de connaitre les clefs des tableaux (ou indice
si tu préferes)

$indices = array_keys($tableau);
// Ceci va créer un tableau comprenant la liste des indices
// soit: $indices[0] égal à 0, $indices[1] égal à 15, $indices[2] égal à 56
// il suffiet de faire une boucle sur $indice pour recupérer les infos et/ou
connaite la valeur des indices
for($i = 0; $i < count($indices), $i++)
echo 'à l'indice '.$indices[$i].' on a la valeur :
'.$tableau[$indices[$i]];

On peut sinon utiliser le code suivant pour connaitre les valeurs et
indices, et je pense que c'est plus simple:

reset($tableau); // Pour pointer sur la 1ere cellule
while(list($indice, $valeur) = each($tableau))
{
...
echo 'à l'indice '.$indice.' on a la valeur : '.$valeur;
...
}

"(¯`· ..Yttrium... ·´¯)" a écrit dans le
message de news:
Bjr,
Soit un tableau :

$tableau

J'affecte à ce tableau les valeurs :
$tableau [0] = "a";
$tableau [15] = "b";
$tableau [56] = "c";
etc..

Lorsque je parcours ce tableau apres avoir trié les clefs par ordre
croissant, , existe t il un moyen de savoir que $tableau [15] est le
troisième élément de ce tableau ?

Merci d'avance.
Salutations.

--
(¯`·..Yttrium ...·´¯)
Pour me répondre en privé: Passez un coup de balai


1 2