2013-06-16 4 views
0

Affiche de la première fois donc j'espère que vous pouvez m'aider avec ce que je pense est une tâche simple, mais ne peut pas comprendre.Pourcentage de boucle de pourcentage de différence

J'ai une table appelée exportations qui a entre autres un champ année et valeur. J'ai actuellement des données pour les années 1992 à 2011.

Ce que je veux être en mesure d'extraire ces données de la base de données, puis de calculer la différence en pourcentage d'une année à l'autre et de stocker les résultats dans un tableau afin que les données peut être passé à un fichier de vue.

Par exemple: ((1993-1992)/1992) * 100), puis ((1994-1993)/1993) * 100), puis ((1995-1994)/1994) * 100), etc., etc.

J'ai besoin d'être flexible pour pouvoir ajouter de futures données. Par exemple, je vais éventuellement ajouter des données pour l'année 2012.

Je suis vraiment coincé sur la façon de progresser. De l'aide serait grandement appréciée.

+0

Nous aimerions voir votre premier code – user4035

+0

S'il vous plaît montrer ce que vous avez essayé jusqu'à présent –

Répondre

0

Si je comprends bien, la solution ne devrait pas être si compliquée. Une simple requête SELECT pour récupérer l'année et la valeur, que vous pouvez ensuite parcourir en utilisant une boucle PHP et calculer les pourcentages. Quelque chose comme ceci:

<?php 
// Get all the data from the database. 
$sql = "SELECT year, value FROM exports"; 
$stmt = $pdo->query($sql); 

// An array to store the precentages. 
$percentages = []; 

// A variable to keep the value for the last year, to be 
// used to calculate the percentage for the current year. 
$lastValue = null; 

foreach ($stmt as $row) { 
    // If there is no last value, the current year is the first one. 
    if ($lastValue == null) { 
     // The first year would always be 100% 
     $percentages[$row["year"]] = 1.0; 
    } 
    else { 
     // Store the percentage for the current year, based on the last year. 
     $percentages[$row["year"]] = (float)$row["value"]/$lastValue; 
    } 

    // Overwrite the last year value with the current year value 
    // to prepare for the next year. 
    $lastValue = (float)$row["value"]; 
} 

Le tableau résultant ressemblerait à ceci:

array (
    [1992] = 1.0, 
    [1993] = 1.2, 
    [1994] = 0.95 
    ... etc ... 
) 
+0

Un grand merci pour votre aide Atli. J'ai utilisé avec succès votre logique pour ce que je visais à réaliser. –

Questions connexes