Formule pour trouver le chiffre le plus proche dans un tableau

Résolu
Anonyme1234_7288 Messages postés 66 Statut Membre -  
yg_be Messages postés 24281 Statut Contributeur -
Bonjour,

J'ai un petit problème avec mon code pour trouver le chiffre le plus proche d'une valeur recherché dans un tableau.

Pourriez-vous m'aider à trouver où ça ne fonctionne pas?

Voici mon code :

<?php
        function getClosest($search, $arr) {
            $closest = null;
            foreach ($arr as $item) {
                if ($closest === null || abs($search - $closest) > abs($item - $search)) {
                    $closest = $item;
                }
            }
            return $closest;
        }

        $recherche = 0.83333333333333;
        $array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15];
        $valPlusProche = getClosest($recherche,$array);

        sort($array);
        print_r($array);
        echo "<br> Valeur cherchée : " . $recherche;
        echo "<br>Plus proche résultat : "  . $valPlusProche;
?>


Merci
A voir également:

1 réponse

yg_be Messages postés 24281 Statut Contributeur Ambassadeur 1 584
 
bonjour, "ça ne fonctionne pas": peux-tu être plus factuel et plus précis?
0
Anonyme1234_7288 Messages postés 66 Statut Membre
 
Et bien, le chiffre qu'il me donne, ce n'est pas le bon
0
yg_be Messages postés 24281 Statut Contributeur 1 584 > Anonyme1234_7288 Messages postés 66 Statut Membre
 
quel chiffre te donne-t'il, et quel chiffre attends-tu?
0
Anonyme1234_7288 Messages postés 66 Statut Membre > yg_be Messages postés 24281 Statut Contributeur
 
C'est bizarre, ça marche. Mais j'ai un autre problème. J'aimerais affiché le tableau contenant les chiffres qui ont été utilisé pour calculer ce ratio. Comme par exemple, le programme va affiché :

[6540] => Array
(
[calc] => 0.94043887147335
[valeurs] => Array
(
[0] => 20
[1] => 29
[2] => 30
[3] => 22
)
)

[6542] => Array
(
[calc] => 1.0815047021944
[valeurs] => Array
(
[0] => 23
[1] => 29
[2] => 30
[3] => 22
)
)

Et etc...

Mais ce que j'aimerais qu'il m'affiche c'est par exemple pour le premier du tableau ci-dessus:

"Engrenage 20, 29, 30, 22"

Et pour le deuxième du tableau ci-dessus :

"Engrenage 23, 29, 30, 22"

Bref, je crois que tu as compris.

Si tu as des questions n'hésite pas
0
yg_be Messages postés 24281 Statut Contributeur 1 584 > Anonyme1234_7288 Messages postés 66 Statut Membre
 
je pense que tu peux réaliser cela en utilisant echo dans une boucle.
0