2017-03-01 8 views
0

Lors de la tentative d'exécution du code ci-dessous, mon navigateur continue de répondre aux erreurs ci-dessous. Comment puis-je corriger le code ci-dessous, donc ces erreurs ne se présentent plus?Décalage non défini et problème de variable indéfinie

Pour être clair, ces erreurs apparaissent uniquement sur les lignes contenant chacun des ci-dessous:

$high = $arr[$middleval+1];

$median = (($low+$high)/2);

Merci

Code:

function median($arr) 
{ 
    sort($arr); 
    $count = count($arr); //count the number of values in array 
    $middleval = floor(($count-1)/2); // find the middle value, or the lowest middle value 
    if ($count % 2) { // odd number, middle is the median 
     $median = $arr[$middleval]; 
    } else { // even number, calculate avg of 2 medians 
     $low = $matches[0]; 
     $high = $arr[$middleval+1]; 
     $median = (($low+$high)/2); 
    } 
    return $median; 
} 

Erreurs:

Notice: Undefined offset: 0 in medium.php on line 9

Notice: Undefined variable: matches in medium.php on line 10

+0

Il n'y a pas de variable '$ matches' dans le code, je ne vois pas comment vous pourriez obtenir la deuxième erreur. – Barmar

+0

$ bas = $ correspond [0]; – user7644146

+0

Vous obtiendrez cette erreur si '$ arr' est vide. '$ count = 0', qui est pair, alors vous essayez d'accéder' $ arr [0] ', qui n'existe pas. – Barmar

Répondre

0

Undefined offset est une erreur hors-limites: vous essayez d'extraire une valeur du tableau qui n'existe pas. Par exemple. si votre tableau a deux valeurs, aux indices 0 et 1, et $middleval est égal à 1, $arr n'a pas de valeur à $middleval + 1, c'est-à-dire $arr[2] n'est pas défini.

Le deuxième message d'erreur vous indique que vous essayez d'utiliser une variable $matches qui n'est pas définie. Vous voudrez peut-être regarder this code review answer.

+0

J'ai modifié mon code. S'excuse – user7644146