Comment augmenter le salaire d'un chef de projet de 5% tous les deux ans ?

Petit nouveau ! | 1 Messages

06 oct. 2022, 12:36

Bonjour à tous,
j'ai un exercice à faire en php mais étant un débutant je suis completement bloqué.... J'aimerais au moins me faire aiguiller ou avoir un peu d'aider puisque je ne sais pas par ou commencer... Voici mon code mais je crois qu'il ne fonctionne pas :
  $j=$this->anciennete;
        if($j=2){
            $nsalaires = $this->salaires +  ($this->salaires *0.10);
                    $fsalaires = $nsalaires  + ($this->salaires * ($j*0.03));
                    echo "__ le nouveau salaire est :" . $nsalaires   .'<br/> et avec la prime on a : ' .$fsalaires  .'<br/><br/>';
                    var_dump($popo1);
                    
        } elseif(3<$j && $j<6){
            $nsalaires  = $this->salaires +  ($this->salaires *0.35);
                    $fsalaires  = $nsalaires  + ($this->salaires * ($j*0.03));
                    echo "__ le nouveau salaire est :" . $nsalaires   .'<br/> et avec la prime on a : ' .$fsalaires .'<br/><br/>';
                    
            } else ($j>=6) {
            $nsalaires  = $this->salaires + ($this->salaires *0.45);
            $fsalaires  = $nsalaires  + ($this->salaires * ($j*0.03));
            echo "__ le nouveau salaire est :" . $nsalaires      .'<br/> et avec la prime on a : ' .$fsalaires  .'<br/><br/>';
Merci beaucoup

ynx
Mammouth du PHP | 586 Messages

06 oct. 2022, 13:45

Bonjour,

Difficile de t'aider sans plus de détails. Quel est le résultat que tu souhaites et quel est le résultat que tu obtiens ?

Il semble y avoir une erreur sur la condition de ton if, attention à ne pas confondre l'opérateur d'affectation (=) et l'opérateur de comparaison d'égalité (== ou ===).

Avatar du membre
Mammouth du PHP | 1609 Messages

06 oct. 2022, 15:12

Salut, un code d'exemple pour voir la logique. A adapter à ton code.

class ProjectManager {
    public $seniority = 0;// ancienneté : 0 année
    public $salary = 1500;// salaire : 1500€ la première année
    public $salaryIncreaseRate = 5 / 100;// pourcentage d'augmentation : 5%
    public $salaryIncreasePeriod = 2;// période d'augmentation : tous les 2 ans
}

$projectManager = new ProjectManager();

/* salaire de chaque année pendant 10 ans */

for ($year = 1; $year <= 10; $year++) {
    //++$projectManager->seniority;// augmentation en année 2, 4, 6, etc

    if (
        0 !== $projectManager->seniority
        && 0 === ($projectManager->seniority % $projectManager->salaryIncreasePeriod)
    ) {
        $projectManager->salary += round(
            $projectManager->salary * $projectManager->salaryIncreaseRate,
            2,
            PHP_ROUND_HALF_UP
        );
    }

    echo "- Année $year : Salaire = {$projectManager->salary}€<br/>\n";

    ++$projectManager->seniority;// augmentation en année 3, 5, 7, etc
}

PS : l'emplacement du ++$projectManager->seniority; en début ou fin du for change la manière dont l'ancienneté est prise en compte. La deuxième option me semble plus logique en vue de l'énoncé. Ce n'est que la troisième année que le salarié a 2 ans d'ancienneté et c'est donc la troisième année qu'il obtient sa première augmentation et ainsi de suite.
Développeur web depuis + de 20 ans