Le problème est bien celui que j'ai pointé, le
var_dump($valeur);
ici
function definition_messagePm25($valeur) {
var_dump($valeur);
le confirme bien :
array(1) { ["avg_amount"]=> string(7) "60.3158" }
Comme tu peux le lire, c'est un
array avec 1 élément (le (1) de array(1)). De plus la valeur de avg_amount est un
string.
Lors de l'appel à la fonction
definition_messagePm25 tu dois donc faire à minima :
definition_messagePm25((float) $avg_pm25['avg_amount']);
ensuite ça devrait fonctionner sans problème.
La avec le code actuel le
if ($valeur < 0)
c'est comme un
if (['avg_amount' => '60.3158'] < 0)
et ça ne peut évidemment pas fonctionner comme tu l'espères.
Avec le système de cast automatique de php ça doit évaluer le tableau comme la chaine
'array' et les comparaisons doivent résulter en comparaison de chaines
'array' < '10' etc et la sortie doit logiquement toujours être
EXTREMEMENT MAUVAIS car la seule condition qui sera vraie est
'array' > '75'.
A noter aussi, tu vas avoir un problème avec les valeurs 10, 20, 25, 50 et 75 car aucune des conditions ne sera évaluée à vraie.
Pour ces valeurs, tu dois choisir sur quelle condition elles doivent être évaluées vraie en utilisant le
>= ou
<= OU ALORS tester seulement la valeur supérieure étant donné qu'à chaque if il y a un return et que tu utilises des elseif.
Par exemple :
function definition_messagePm25($valeur) {
$valeur = (float) $valeur;
if ($valeur < 0) {
return 'ERREUR';
}
if ($valeur < 10) {
return 'BON';
}
if ($valeur < 20) {
return 'MOYEN';
}
if ($valeur < 25) {
return 'DEGRADE';
}
if ($valeur < 50) {
return 'MAUVAIS';
}
if ($valeur < 75) {
return 'TRES MAUVAIS';
}
return 'EXTREMEMENT MAUVAIS';
}
// OU
function definition_messagePm25($valeur) {
$valeur = (float) $valeur;
$definition = '';
if ($valeur < 0) {
$definition = 'ERREUR';
} elseif ($valeur < 10) {
$definition = 'BON';
} elseif ($valeur < 20) {
$definition = 'MOYEN';
} elseif ($valeur < 25) {
$definition = 'DEGRADE';
} elseif ($valeur < 50) {
$definition = 'MAUVAIS';
} elseif ($valeur < 75) {
$definition = 'TRES MAUVAIS';
} else {
$definition = 'EXTREMEMENT MAUVAIS';
}
return $definition;
}
// TEST
$avg_pm25 = [
'avg_amount' => '60.3158',
];
echo definition_messagePm25($avg_pm25['avg_amount']);
// TRES MAUVAIS