par
FredoMkb » 03 juin 2008, 14:51
Bonjour
Voici quelques pistes... mais
1. Si on connaît d'avance les différentes sous-listes à tester :
$tab[0] = array(1, 2, 3);
$tab[1] = array(3, 4, 5);
$tab[3] = array(6, 7, 8);
$tst = 3;
echo (int)in_array($tst, array_merge($tab[0], $tab[1], $tab[3])); // 1
/* ----- */
$tst = 12;
echo (int)in_array($tst, array_merge($tab[0], $tab[1], $tab[3])); // 0
2. Sans connaître d'avance les différentes sous-listes et sans utiliser 'foreach' :
$tab[0] = array(1, 2, 3);
$tab[1] = array(3, 4, 5);
$tab[3] = array(6, 7, 8);
$tst = 3;
$res = 0;
function inArray($arr, $key) {
global $tst, $res;
if (in_array($tst, $arr)) { $res = 1; }
}
array_walk($tab, 'inArray');
echo $res; // 1
/* ----- */
$tst = 12;
echo $res; // 0
3. Sans connaître d'avance les différentes sous-listes et avec un 'foreach' :
$tab[0] = array(1, 2, 3);
$tab[1] = array(3, 4, 5);
$tab[3] = array(6, 7, 8);
$tst = 3;
$res = 0;
foreach ($tab as $key => $val) {
if (in_array($tst, $val)) { $res = 1; }
}
echo $res; // 1
/* ----- */
$tst = 12;
echo $res; // 0
Ces codes peuvent bien-sûr être optimisés le cas échéant...
Je disais "mais" en préambule, en effet, parfois les solutions alternatives sont finalement moins intéressantes que la solution de base, en tout cas en ce qui concerne les pistes que je viens de proposer... à voir donc l'utilité selon l'utilisation...
à+

Bonjour :)
Voici quelques pistes... mais :shock:
[b]1.[/b] Si on connaît d'avance les différentes sous-listes à tester :
[php]$tab[0] = array(1, 2, 3);
$tab[1] = array(3, 4, 5);
$tab[3] = array(6, 7, 8);
$tst = 3;
echo (int)in_array($tst, array_merge($tab[0], $tab[1], $tab[3])); // 1
/* ----- */
$tst = 12;
echo (int)in_array($tst, array_merge($tab[0], $tab[1], $tab[3])); // 0
[/php]
[b]2.[/b] Sans connaître d'avance les différentes sous-listes et sans utiliser 'foreach' :
[php]$tab[0] = array(1, 2, 3);
$tab[1] = array(3, 4, 5);
$tab[3] = array(6, 7, 8);
$tst = 3;
$res = 0;
function inArray($arr, $key) {
global $tst, $res;
if (in_array($tst, $arr)) { $res = 1; }
}
array_walk($tab, 'inArray');
echo $res; // 1
/* ----- */
$tst = 12;
echo $res; // 0
[/php]
[b]3.[/b] Sans connaître d'avance les différentes sous-listes et avec un 'foreach' :
[php]$tab[0] = array(1, 2, 3);
$tab[1] = array(3, 4, 5);
$tab[3] = array(6, 7, 8);
$tst = 3;
$res = 0;
foreach ($tab as $key => $val) {
if (in_array($tst, $val)) { $res = 1; }
}
echo $res; // 1
/* ----- */
$tst = 12;
echo $res; // 0
[/php]
Ces codes peuvent bien-sûr être optimisés le cas échéant...
Je disais "mais" en préambule, en effet, parfois les solutions alternatives sont finalement moins intéressantes que la solution de base, en tout cas en ce qui concerne les pistes que je viens de proposer... à voir donc l'utilité selon l'utilisation... :shock: :D
à+ :)