Vous n'êtes pas identifié(e).
Bonsoir à tous,
J'ai une demande à vous faire: je dois comparer les valeurs d'un tableau et je ne sais pas trop comment prendre le problème que voici.
J'ai d'un côté un tableau qui contient (p.ex.) 5 chiffres => 10, 20, 40 ,80, 100
J'ai de l'autre un tableau qui contient (p.ex.) 3 chiffres => 5, 50, 90
J'aimerais connaître le nombre d'éléments du premier tableau qui sont plus petits que 5, entre 5 et 50, entre 50 et 90.
En gros j'aimerais comparer les valeurs de deux tableaux avec un opérateur mathématique, le tout en me déplaçant entre deux valeurs qui font office de limite.
J'ai essayé de composer un fonction maison sur la proposition du manuel PHP, à savoir ceci :
// this cycle echoes all associative array
// key where value equals "apple"
while ($fruit_name = current($array)) {
if ($fruit_name == 'apple') {
echo key($array).'<br />';
}
next($array);
}
, mais je dois faire fausse route.
Cela fait plusieurs jours que je tourne le problème dans ma caboche, mais je ne vois tjrs pas quelle démarche entamer.
Vos lumières sont les bienvenues!
Merci et belle soirée à tous.
Hors ligne
Bonjour,
Voici la solution que je te propose:
1) tu fais une boucle principale avec ton 2e tableau (celui qui dans ton exemple contient 5,50,90)
2) tu crée un tableau dynamique à deux dimensions ici ($my_array) qui stocke pour chaque intervalle (1e dimension) l'ensemble des valeurs associés dans la 2e dimension
Normalement ca devrait marcher à partir du moment où le tableau de tes intervalles représente une suite de nombres croissants et positifs.
Dernière modification par Jc (01-09-2010 21:24:58)
POO PHP+Ajax en MVC avec PDO et Bases de données épaisses : What else?
Hors ligne
Merci pour le coup de pouce.
J'ai bossé encore un peu le truc et je crois avoir trouvé une solution correcte :
[code php]$tab1 = array(9,10, 14, 17, 40, 200, 240, 300, 340, 600);
$tab2 = array(1, 11, 12, 230, 240, 450);
$sum = 1;
$j = 0;
$k = 0;
foreach ($tab1 as $key1) {
foreach ($tab2 as $key2) {
print $key1 . ' > ' .$tab2[$j++] ;
if ( $key1 > $tab2[$k++] ) {
$sum_array = array($sum++);
print ' TRUE';
}
print '<br/><br/>';
}
print 'Number of added true: ' . max($sum_array) .'<br/><br/>';
$sum_array = array();
$j = 0;
$k = 0;
}[/code]
Ce qui donne :
[code]9 > 1 TRUE
9 > 11
9 > 12
9 > 230
9 > 240
9 > 450
Number of added true: 1
10 > 1 TRUE
10 > 11
10 > 12
10 > 230
10 > 240
10 > 450
Number of added true: 2
14 > 1 TRUE
14 > 11 TRUE
14 > 12 TRUE
14 > 230
14 > 240
14 > 450
Number of added true: 5[/code]
...... etc. Bien sûr je n'ai pas ici l'intervalle, mais ce serait très facile de l'ajouter comme ceci au début de la 2ème boucle foreach:
[code php]
$key1 > $tab2[$j++] && $key1 < $tab2[$j];
[/code]
Merci!
Dernière modification par Yannick (01-09-2010 22:29:50)
Hors ligne