Skip to content

Instantly share code, notes, and snippets.

@tomsihap
Created August 12, 2020 11:59
Show Gist options
  • Save tomsihap/2dd0d48a621c5991af97b446a76e4af7 to your computer and use it in GitHub Desktop.
Save tomsihap/2dd0d48a621c5991af97b446a76e4af7 to your computer and use it in GitHub Desktop.
<?php
// Exercice 1
// Créer une variable name et l'initialiser avec la valeur de votre choix. Afficher son contenu.
$name = "Thomas";
// Exercice 2
// Créer trois variables lastname, firstname et age et les initialiser avec les valeurs de votre choix. Attention age est de type entier. Afficher leur contenu.
$lastname = "Sihapanya";
$firstname = "Thomas";
$age = 29;
var_dump($lastname, $firstname, $age);
// Exercice 3
// Créer une variable km. L'initialiser à 1. Afficher son contenu. Changer sa valeur par 3. Afficher son contenu. Changer sa valeur par 125. Afficher son contenu.
$km = 1;
var_dump($km);
$km = 3;
var_dump($km);
$km = 125;
var_dump($km);
// Exercice 4
// Créer une variable de type string, une variable de type int, une variable de type float, une variable de type booléan et les initialiser avec une valeur de votre choix. Les afficher.
$string = "";
$int = 0;
$float = 0.0;
$array = []; // ancienne notation: array()
$bool = false;
$null = null;
/**
* Toutes ces valeurs correspondent à false dans leurs types respectifs
*/
if (!$string && !$int && !$float && !$bool && !$array && !$null) {
echo "ok";
}
// Exercice 7
// Créer trois variables lastname , firstname et age et les initialiser avec les valeurs de votre choix. Attention age est de type entier. Afficher : "Bonjour" + lastname + firstname + ",tu as" + age + "ans".
$sentence = "Bonjour " . $firstname . " " . $lastname . ", tu as " . $age . " ans.";
$sentence = 'Bonjour ' . $firstname . ' ' . $lastname . ', tu as ' . $age . ' ans.';
$sentence = "Bonjour $firstname $lastname tu as $age ans.";
// Exercice 8
// Créer 3 variables. Dans la première mettre le résultat de l'opération 3 + 4. Dans la deuxième mettre le résultat de l'opération 5 * 20. Dans la troisième mettre le résultat de l'opération 45 / 5. Afficher le contenu des variables.
$a = 34 + 23;
$b = $a/24;
$c = $a*$b;
$a = (false) ?: "test";
var_dump($a);
<?php
// Exercice 1
// Créer une variable age et l'initialiser avec une valeur. Si l'âge est supérieur ou égale à 18, afficher Vous êtes majeur. Dans le cas contraire, afficher Vous êtes mineur.
$age = 20;
if ($age <= 18) {
var_dump('tu es mineur');
} else {
var_dump('tu es majeur');
}
$age = 20;
$sentence = "tu es majeur";
if ($age <= 18) {
$sentence = 'tu es mineur';
}
var_dump($sentence);
// Exercice 2
// Créer une variable isEasy de type booléan et l'initialiser avec une valeur. Afficher C'est facile ! si c'est vrai. Dans le cas contraire afficher C'est difficile !. Bonus : L'écrire de deux manières différentes.
$isEasy = true;
if ($isEasy) {
var_dump('facile !');
} else {
var_dump('difficile !');
}
if ($isEasy) var_dump('facile');
else var_dump('difficile');
var_dump(($isEasy) ? 'facile' : 'difficile');
// Exercice 3
// Créer deux variables age et gender. La variable gender peut prendre comme valeur :
// Homme
// Femme
// En fonction de l'âge et du genre afficher la phrase correspondante :
// Vous êtes un homme et vous êtes majeur
// Vous êtes un homme et vous êtes mineur
// Vous êtes une femme et vous êtes majeur
// Vous êtes une femme et vous êtes mineur
// Gérer tous les cas.
$age = 15;
$sexe = "h";
/**
* Mauvaise manière (gérer tous les cas un par un)
*/
if ($age <= 18) {
if ($sexe === "f") {
var_dump("Vous êtes une femme et vous êtes mineure");
} else {
var_dump("Vous êtes un homme et vous êtes mineur");
}
}
$ageString = "vous êtes majeur";
if ($age <= 18) {
$ageString = "vous êtes mineur";
}
$sexeString = "homme";
$accord = "";
if ($sexe === "f") {
$sexeString = "femme";
$accord = "e";
}
var_dump("Vous êtes un" . $accord . " " . $sexeString . " et " . $ageString . $accord);
// Exercice 4
// L'échelle de Richter est un outil de mesure qui permet de définir la magnitude de moment d'un tremblement de terre. Cette échelle va de 1 à 9. Créer une variable magnitude. Selon la valeur de magnitude, afficher la phrase correspondante.
// Magnitude Phrase
// 1 Micro-séisme impossible à ressentir.
// 2 Micro-séisme impossible à ressentir mais enregistrable par les sismomètres.
// 3 Ne cause pas de dégats mais commence à pouvoir être légèrement ressenti.
// 4 Séisme capable de faire bouger des objets mais ne causant généralement pas de dégats.
// 5 Séisme capable d'engendrer des dégats importants sur de vieux bâtiments ou bien des bâtiments présentants des défauts de construction. Peu de dégats sur des bâtiments modernes.
// 6 Fort séisme capable d'engendrer des destructions majeures sur une large distance (180 km) autour de l'épicentre.
// 7 Séisme capable de destructions majeures à modérées sur une très large zone en fonction de la distance.
// 8 Séisme capable de destructions majeures sur une très large zone de plusieurs centaines de kilomètres.
// 9 Séisme capable de tout détruire sur une très vaste zone.
// Gérer tous les cas. Utilser autre chose que des if else
$richter = 5;
switch ($richter) {
case 1:
var_dump("Micro-séisme impossible à ressentir.");
foreach($a as $b) {
echo "ok";
}
break;
case 2:
var_dump("Micro-séisme impossible à ressentir mais enregistrable par les sismomètres.");
break;
case 3:
var_dump("Ne cause pas de dégats mais commence à pouvoir être légèrement ressenti.");
break;
case 4:
var_dump("Séisme capable de faire bouger des objets mais ne causant généralement pas de dégats.");
break;
case 5:
var_dump("Séisme capable d'engendrer des dégats importants sur de vieux bâtiments ou bien des bâtiments présentants des défauts de construction. Peu de dégats sur des bâtiments modernes.");
break;
case 6:
var_dump("Fort séisme capable d'engendrer des destructions majeures sur une large distance (180 km) autour de l'épicentre.");
break;
case 7:
var_dump("Séisme capable de destructions majeures à modérées sur une très large zone en fonction de la distance.");
break;
case 8:
var_dump("Séisme capable de destructions majeures sur une très large zone de plusieurs centaines de kilomètres.");
break;
case 9:
var_dump("Séisme capable de tout détruire sur une très vaste zone.");
break;
default:
var_dump("Valeur inconnue");
}
// Exercice 5
// Traduire ce code avec des if et des else :
/**
* <?php
* echo ($type == 'fire') ? 'Vous avez choisi Salamèche.' : 'Vous avez choisi Bulbizarre ou Carapuce !';
* ?>
*/
if($type === "fire") {
var_dump('Vous avez choisi Salamèche');
}
else {
var_dump('Vous avez choisi Bulbizarre ou Carapuce !');
}
// Exercice bonus
// if ($age <= 18) {
// if ($sexe === "f") {
// var_dump("Vous êtes une femme et vous êtes mineure");
// } else {
// var_dump("Vous êtes un homme et vous êtes mineur");
// }
// }
// else {
// var_dump("vous êtes majeur");
// }
$string = ($sexe === "f") ? "Vous êtes une femme" : "Vous êtes un homme";
var_dump($string);
$string2 = ($age <= 18) ?
($sexe === "f") ? "Vous êtes une femme" : "Vous êtes un homme"
: "Vous êtes majeur";
<?php
// Exercice 1
// Créer une variable et l'initialiser à 0. Tant que cette variable n'atteint pas 10, il faut :
// l'afficher
// l'incrementer
for($i = 0; $i <= 10; $i++) {
var_dump($i);
}
$i = 0;
while($i <= 10) {
var_dump($i);
$i++;
}
do {
var_dump($i);
$i++;
} while ($i < 10);
// Exercice 2
// Créer deux variables. Initialiser la première à 0 et la deuxième avec un nombre compris en 1 et 100. Tant que la première variable n'est pas supérieure à 20 :
// multiplier la première variable avec la deuxième
// afficher le résultat
// incrementer la première variable
$a = 0;
$b = 42;
while ($a <= 20) {
var_dump($a*$b);
$a++;
}
// Exercice 3
// Créer deux variables. Initialiser la première à 100 et la deuxième avec un nombre compris en 1 et 100. Tant que la première variable n'est pas inférieure ou égale à 10 :
// multiplier la première variable avec la deuxième
// afficher le résultat
// décrémenter la première variable
$a = 100;
$b = 23;
while ($a >= 10) {
var_dump($a * $b);
$a--;
}
// Exercice 4
// Créer une variable et l'initialiser à 1. Tant que cette variable n'atteint pas 10, il faut :
// l'afficher
// l'incrementer de la moitié de sa valeur
for($i = 1; $i <= 10; $i += $i/2 ) {
var_dump($i);
}
$string = "foo";
$string .= "bar"; // correspond à $string = $string . "bar";
$int = 32;
$int += 10; // correspond à $int = $int + 10;
// Exercice 5
// En allant de 1 à 15 avec un pas de 1, afficher le message On y arrive presque.
for($i = 1; $i <= 15; $i++) {
var_dump('on y arrive presque');
}
// Exercice 6
// En allant de 20 à 0 avec un pas de 1, afficher le message C'est presque bon.
for($i = 20; $i >= 1; $i--) {
var_dump("presque bon");
}
// Exercice 7
// En allant de 1 à 100 avec un pas de 15, afficher le message On tient le bon bout.
for($i=1; $i >= 100; $i += 15) {
var_dump('on tient le bout');
}
// Exercice 8
// En allant de 200 à 0 avec un pas de 12, afficher le message Enfin !!!!.
for($i=200; $i>=0; $i -= 12) {
var_dump('enfin');
}
<?php
// Exercice 1
// Faire une fonction qui retourne true.
function ex1() : bool {
return true;
}
// Exercice 2
// Faire une fonction qui prend en paramètre une chaine de caractères et qui retourne cette même chaine.
function ex2(string $str) : string {
return $str;
}
// Exercice 3
// Faire une fonction qui prend en paramètre deux chaines de caractères et qui revoit la concaténation de ces deux chaines
function ex3(string $str1, string $str2) : string {
return $str1 . $str2;
}
// Exercice 4
// Faire une fonction qui prend en paramètre deux nombres. La fonction doit retourner :
// Le premier nombre est plus grand si le premier nombre est plus grand que le deuxième
// Le premier nombre est plus petit si le premier nombre est plus petit que le deuxième
// Les deux nombres sont identiques si les deux nombres sont égaux
function ex4(int $a, int $b) : string {
if ($a < $b) {
return "$a plus petit que $b";
}
if ($a > $b) {
return "$a plus grand que $b";
}
return "$a égal à $b";
}
function ex4bis(int $a, int $b): string
{
if ($a === $b) return "$a égal à $b";
return ($a < $b) ? "$a plus petit que $b" : "$a plus grand que $b";
}
var_dump(ex4(12, 23));
var_dump(ex4bis(12, 23));
var_dump(ex4(23, 12));
var_dump(ex4bis(23, 12));
var_dump(ex4(12, 12));
var_dump(ex4bis(12, 12));
// Exercice 5
// Faire une fonction qui prend en paramètre un nombre et une chaine de caractères et qui renvoit la concaténation de ces deux paramètres.
function ex5(int $int1, string $str1): string
{
return $int1 . $str1;
}
// Exercice 6
// Faire une fonction qui prend trois paramètres : le nom, le prénom et l'âge d'une personne. Elle doit renvoyer une chaine de la forme : "Bonjour" + nom + prénom + ",tu as" + age + "ans".
function ex6( string $nom,
string $prenom,
string $age) : string
{
return "Bonjour $nom $prenom, tu as $age ans.";
}
// Exercice 7
// Faire une fonction qui prend deux paramètres : l'âge et le genre d'une personne. Le genre peut être :
// Homme
// Femme
// La fonction doit renvoyer en fonction des paramètres :
// Vous êtes un homme et vous êtes majeur
// Vous êtes un homme et vous êtes mineur
// Vous êtes une femme et vous êtes majeur
// Vous êtes une femme et vous êtes mineur
// Gérer tous les cas.
function ex7(int $age, string $sexe) : string {
$ageString = "vous êtes majeur";
if ($age <= 18) {
$ageString = "vous êtes mineur";
}
$sexeString = "homme";
$accord = "";
if ($sexe === "f") {
$sexeString = "femme";
$accord = "e";
}
return("Vous êtes un" . $accord . " " . $sexeString . " et " . $ageString . $accord);
}
// Exercice 8
// Faire une fonction qui prend en paramètre trois nombres et qui renvoit la somme de ces nombres. Tous les paramètres doivent avoir une valeur par défaut.
function ex8(int $a = 12,int $b = 13, int $c = 14) : int {
return $a + $b + $c;
}
// Exercice 9
// Trouvez les fonctions prêtes à l'emploi de PHP permettant de :
// a. Trouver la longueur d'une string
// b. Rechercher et remplacer dans une string
// c. Tester si le type de la variable est string.
$string = "foobar";
var_dump( strlen($string) );
var_dump( str_replace("foo", "baz", $string) ); // on recherche "foo", remplacé par "baz", dans $string
var_dump( is_string($string) );
// Exercice 10
// Créer une fonction qui inverse une string (par exemple: "Table" deviendra "elbaT") - sans fonction récursive.
// Indice : vous pouvez connaître la longueur d'une string avec strlen($string) Indice : vous pouvez accéder à la nième lettre d'une string : $string[n] (par exemple la 3ème lettre : $string[2] ).
$stringInv = '';
function ex10(string $input) : string {
global $stringInv;
for($i = strlen($input) - 1 ; $i >= 0 ; $i--) {
$stringInv .= $input[$i];
}
$input = $stringInv;
return $input;
}
$string = "azerty";
var_dump($string);
var_dump( ex10($string) );
function comparaisonAdn(string $brinUn, string $brinDeux): ?int
{
$cpt = 0;
// Vérifier la taille
if (strlen($brinUn) == strlen($brinDeux)) {
for ($i = strlen($brinUn) - 1; $i >= 0; $i--) {
if ($brinUn[$i] != $brinDeux[$i]) {
$cpt++;
}
}
return $cpt;
}
return null;
}
var_dump(comparaisonAdn("abcd", "abcde"));
function comparaisonAdn2(string $a, string $b) : ?int {
/**
* On vérifie si les deux strings ont la même taille
*/
if (strlen($a) === strlen($b)) {
/**
* On convertit les deux strings en tableaux
*/
$arrayA = str_split($a);
$arrayB = str_split($b);
/**
* On compare les deux tableaux: array_diff_assoc prend le premier argument
* comme tableau de référence (["a", "b", "c"]) et compare ce qui est différent
* dans le second tableau (["a", "c", "d"]). Il retourne ensuite un tableau
* contenant la liste des différences.
*
* La fonction retourne le nombre (count()) de différences trouvées.
*/
return count(array_diff_assoc($arrayA, $arrayB));
}
return null;
}
var_dump(comparaisonAdn2("azerty", "azertyd"));
// AAA-0000
function robotName()
{
/**
* Liste des lettres acceptées
*/
$letters = ["R", "Z", "S", "X", "W", "T"];
$randLetter = []; // On prépare le tableau de lettres du nom du robot
/**
* On boucle 3 fois pour scanner le tableau $letters et
* récupérer 3 lettres aléatoires
*/
for ($i = 0; $i < 3; $i++) {
/**
* On trouve un index aléatoire dans $letters :
*/
$randLetterIndex = array_rand($letters, 1);
/**
* On ajoute au tableau $randLetter la lettre aléatoire trouvée
*/
$randLetter[] = $letters[$randLetterIndex]; // Autre écriture: array_push($randLetter, $letters[$randLetterIndex]);
}
/**
* str_pad permet de remplir à gauche (STR_PAD_LEFT) ou à droite des caractères qui pourraient manquer
* dans la string passée en paramètres (ici : $randomNumber).
* Je demande à avoir une string de 4 charactères (2ème param), et s'il manque des caractères,
* je les remplace par des 0 (3ème param).
*/
$randomNumber = rand(0, 999); // exemple: 46
$randNumberString = str_pad($randomNumber, 4, "0", STR_PAD_LEFT); // exemple: 0046
return implode($randLetter) . "-" . $randNumberString; // implode réunit les éléments d'un array en une string
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment