Page 1 sur 1
Tester presence valaur dans tableau ?
Posté : 10 mai 2006, 16:26
par AllPHP13
Bonjour
J'ai un tableau en session :
$_SESSION[arr][]=array('ref' => $ref,'designation' => $designation)
J'aimerais tester la présence d'une variable $ref dans ce tableau
Comment faire ?
in_array($ref,$_SESSION['ar'] )
Grand merci
Re: Tester presence valaur dans tableau ?
Posté : 10 mai 2006, 16:28
par zeus
Comment faire ?
in_array($ref,$_SESSION['ar'] )
Bingo
Est-ce que tu as seulement essayé avant de poster ?
Posté : 10 mai 2006, 16:31
par zeus
Fait voir comment tu fait ton test
Posté : 10 mai 2006, 16:35
par allphp13
if(isset($_SESSION['arr']) && in_array($ref, $_SESSION['arr'])){echo 'valeur trouvee';}
Posté : 10 mai 2006, 16:38
par zeus
Et si, avant le test, tu fait ça :
var_dump($_SESSION);
tu obtient quoi ?
Posté : 10 mai 2006, 16:38
par Ryle
Chuis po sur que ca marche.. y a une deuxième dimension incidieusement planquée dans son tableau...
A confirmer, mais je pense qu'il faut boucler et tester pour chaque sous tableau si celui-ci contient la valeur recherché, le premier ne contenant finalement que des Array()
cela dit chuis pas allé vérifié, le in_array fonctionne peut être de manière récursive, dans ce cas là, z'avez qu'à faire comme si j'avais rien dit

Posté : 10 mai 2006, 16:39
par zeus
en fait, comme il donne $_SESSION[$arr], il passe un sous-tableau de $_SESSION donc ca marche. J'utilise souvent cette manière de faire et je n'ai jamais eu de soucis

Posté : 10 mai 2006, 16:40
par allphp13
J'ai le contenu complet du tableau qui s'affiche
Posté : 10 mai 2006, 16:41
par zeus
Est-ce que le contenu de $ref s'y trouve ?
Posté : 10 mai 2006, 16:41
par Invité
Pour la valeur qui m'intéresse :
array(5) { ["ref"]=> string(6) "2303-4"
Posté : 10 mai 2006, 16:46
par Ryle
zeus >> ben vi, mais le sous tableau $_SESSION[$arr] est justement un tableau de tableau :
$_SESSION[arr][]=array(...)
d'où mon interrogation pour savoir si le in_array irait jusque là pour retourner un résultat ou s'il s'arrêterais au premier niveau ne contenant que des tableaux et retournant qu'il ne l'a pas trouvé...
Posté : 10 mai 2006, 16:50
par zeus
put***, j'avais pas vu ...
C'est soit tu fait
$_SESSION[$arr]["ref"] = $ref;
$_SESSION[$arr]["designation"] = $designation;
soit tu fait
$_SESSION[$arr] = array('ref' => $ref,'designation' => $designation);
Mais pas les 2, sinon tu as une dimension en trop

Posté : 10 mai 2006, 16:57
par allphp13
Mon tableau est concu de cette façon :
$_SESSION[$arr] = array('ref' => $ref,'designation' => $designation);
[/php]
Posté : 10 mai 2006, 17:00
par Invité
Je m'en suis sorti comme ça :
foreach( $_SESSION['devis'] as $v )
{
if($v['ref']==$ref){echo 'toto';}
}
Posté : 10 mai 2006, 17:26
par Ryle
Ah ben oui mais tu triches, tu changes en cours de route... s'il n'y a qu'une dimension ce que disais zeus était juste et le in_array devrait normalement très bien fonctionner...
Pour le coup, le foreach ne sert à rien, autant faire directement :
if( $_SESSION['devis']['ref']==$ref){echo 'toto';}
//ou
if ( in_array($ref,$_SESSION['devis']) ){echo 'toto';}
// sachant que du coup il ira aussi regarder s'il trouve la valeur dans "designation"