Comment "nommer" une variable

Eléphanteau du PHP | 38 Messages

01 déc. 2008, 19:56

D'accord, merci de ton aide.

Eléphanteau du PHP | 38 Messages

13 déc. 2008, 00:33

Rebonjour.
J'ai copié exactement le même code et j'ai changé ceci:
// Afficher les valeurs actuelles de ses propriétés
print_r( $batiment1->getCoutPopulation() ); // pour tous les niveaux
echo "1<br />";
echo $batiment1->getCoutPopulation(1); // pour le niveau 1
echo 'aaa'.$couts['bois'].'';
echo $batiment1->getCoutPopulation(2); // pour le niveau 2
echo "<br />";
$batiment1->initCoutPopulation(); // Efface tous les couts
$batiment1->setCoutPopulation(2, 700); // mettre à jour un cout
$batiment1->setCoutPopulation(1, 25); // mettre à jour un cout
echo "<br />";
(en clair j'ai mit ce que je voulais voir)
mais voici ce que m'affiche la page:

Array
(
[1] => 10
[2] => 12
[3] => 14
[4] => 16
)
1
10aaaArray12

Coût population du niveau 1 = 25
Coût population du niveau 2 = 700
Coût population du niveau 3 = 0
Coût population du niveau 4 = 0

Array
(
[1] => 20
[2] => 24
[3] => 28
[4] => 34
)

Point du niveau 1 = 25
Point du niveau 2 = 0
Point du niveau 3 = 0
Point du niveau 4 = 0


Où est le probleme? Pourtant ton script est juste.

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

13 déc. 2008, 14:07

Pour la partie qui s'affiche comme ça:
1
10aaaArray12

tu as ajouté des echo, dont un qui s'applique au tableau $couts['bois'], et c'est normal qu'il t'affiche le mot "Array" car echo n'affiche pas les tableaux, faut faire un print_r($couts['bois']).

Voici donc l'analyse des instruction qui ont affiché ça:
  • le "1" affiché par l'instruction : echo "1<br />";
    le "10" affiché par l'instruction : echo $batiment1->getCoutPopulation(1);
    le "aaaArray" affiché par l'instruction : echo 'aaa'.$couts['bois'].'';
    le "12" affiché par l'instruction : echo $batiment1->getCoutPopulation(2);
Si tu as modifié ton script comme suit, alors c'est normal que tu ais ces résultats.
//
// PROGRAMME DE TEST DE LA CLASSE
//
// Configuration des paramètres utiles
$couts['population'] = array(1=>10,  2=>12,  3=>14,  4=>16);
$couts['bois']          = array(1=>180, 2=>226, 3=>286, 4=>360);
$couts['pierre']      = array(1=>160, 2=>204, 3=>260, 4=>332);
$couts['fer']          = array(1=>140, 2=>176, 3=>222, 4=>280);
$points              = array(1=>20,  2=>24,  3=>28,  4=>34);
 
// Création d'un objet Batiment
$batiment1 = new Batiment($couts, $points);

// [partie que tu as changé] 

// Afficher les valeurs actuelles de ses propriétés
print_r( $batiment1->getCoutPopulation() ); // pour tous les niveaux

echo "1<br />";

echo $batiment1->getCoutPopulation(1); // pour le niveau 1

echo 'aaa'.$couts['bois'].'';

echo $batiment1->getCoutPopulation(2); // pour le niveau 2

echo "<br />";

$batiment1->initCoutPopulation(); // Efface tous les couts
$batiment1->setCoutPopulation(2, 700); // mettre à jour un cout
$batiment1->setCoutPopulation(1, 25); // mettre à jour un cout

echo "<br />"; 

// autre façon pour accéder aux couts niveau/niveau
foreach ($batiment1->getCoutPopulation() as $niveau=>$cout){
    echo "Coût population du niveau " . $niveau . " = " . $cout . "<br />";
}

echo "<br />";

// [/Partie que tu as changé]

// [Si tu n'as pas modifié la partie qui suit alors les résultats affichée sont normaux]

print_r(  $batiment1->getPointsObtenus() ); //tous les points
$batiment1->initPointsObtenus(); // Efface tous les points
$batiment1->setPointsObtenus(1, 25); // mettre à jour un point par niveau

echo "<br />";

// autre façon pour accéder aux points niveau/niveau
foreach ($batiment1->getPointsObtenus() as $niveau=>$point){
    echo "Point du niveau " . $niveau . " = " . $point . "<br />";
}
// ect ...
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Eléphanteau du PHP | 38 Messages

26 déc. 2008, 17:14

Merci.
Désolé du retard pour ce remerciement, mais j'ai quelques problemes d'internet en ce moment :xd

J'ai remarqué un truc dans ton script:
//
<?php
// PROGRAMME DE TEST DE LA CLASSE
//
// Configuration des paramètres utiles
$couts['population'] = array(1=>10,  2=>12,  3=>14,  4=>16);           
$couts['bois']          = array(1=>180, 2=>226, 3=>286, 4=>360);
$couts['pierre']      = array(1=>160, 2=>204, 3=>260, 4=>332);
$couts['fer']          = array(1=>140, 2=>176, 3=>222, 4=>280);
$points              = array(1=>20,  2=>24,  3=>28,  4=>34);
 
// Création d'un objet Batiment
$1erbatiment= new Batiment($couts, $points);?>


dans ce passage, tu donne les valeurs avant de créer l'objet.

Moi qui veut créer differents objets (avec differentes valeurs), en utilisant la même class, je fait comment?

Aprés ce script je refait à la suite:
//
// PROGRAMME DE TEST DE LA CLASSE
//
// Configuration des paramètres utiles
$couts['population'] = array(1=>10,  2=>12,  3=>14,  4=>16);
$couts['bois']          = array(1=>180, 2=>226, 3=>286, 4=>360); //valeur differente
$couts['pierre']      = array(1=>160, 2=>204, 3=>260, 4=>332);
$couts['fer']          = array(1=>140, 2=>176, 3=>222, 4=>280);
$points              = array(1=>20,  2=>24,  3=>28,  4=>34);
 
// Création d'un objet Batiment
$2eme batiment = new Batiment($couts, $points);

Je sais pas si j'ai été trés clair dans ma question..dsl^^

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

26 déc. 2008, 19:43

Ces valeurs sont spécifiques à un objet. Il faut donner les valeurs normalement pour chaque objet au moment de la création de l'objet ou en utilisant les méthodes setXxxxx spécifiques.

Le plus simple, si ton objet doit démarrer avec des valeurs initiales, est de déclarer donc ses valeurs comme tu as fait (dans des tableaux $cout et $points) avant de faire l'instanciation :
// Configuration des valeurs initiales pour l'objet batiment
$couts['population'] = array(1=>10, 2=>12, 3=>14, 4=>16);
$couts['bois'] = array(1=>180, 2=>226, 3=>286, 4=>360); //valeur differente
$couts['pierre'] = array(1=>160, 2=>204, 3=>260, 4=>332);
$couts['fer'] = array(1=>140, 2=>176, 3=>222, 4=>280);
$points = array(1=>20, 2=>24, 3=>28, 4=>34);

// Création d'un objet Batiment
$2eme batiment = new Batiment($couts, $points);
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Eléphanteau du PHP | 38 Messages

26 déc. 2008, 20:16

Bien merci.
Vu que je vais faire plusieurs batiments, je compte créer un fichier ou il n'y aura que le script pour la class.
Ensuite, je ferai un fichier pour chaque batiments. Ca simplifira le script. C'est mieux je pense.

Je pense que je n'aurai plus de questions pour la suite.
Merci de ta patience:)