DEMO Html5DEMO WORDPRESSDEMO WEBSHOP

Php

Anonymous functions – closures

$square = function ($number) {
  return $number * $number;
};

$result = $square(5);
echo '5 gange med sig selv = ' . $result;

Læg mærke til at der efter en anonymous function lukkes med semikolon

function () {
  ...
};

I eksemplet var det :

function ($number) {
  return $number * $number;
};

Resultat: 5 gange med sig selv = 25

Læs mere.

Closures

function createCounter() {
  $count = 0;

  $counter = function() use(&$count) {
    return ++$count;
  };
  return $counter;
}

$counter = createCounter();
echo $counter() . '<br />';
echo $counter() . '<br />';
echo $counter() . '<br />';

For at få "adgang" til $count når $counter defineres, benytter vi use(&$count).
På den måde kan vi hente $count fra et andet scope og benytte inde i $counter scope!

Resultat:
1
2
3

Arithmetic Operators – Matematiske udtryk

Læs mere her.

  • + Addition
  • – Subtraction
  • * Multiplication
  • / Division
  • % Modulus (rest ved division)

array_pop()

array_pop() fjerne sidste værdi i et array()

$ids = [10, 22, 15, 45, 67];
array_pop($ids);

Resultat = 10,22,15,45

array_push()

At tilføje data til et array()

$ids = [10, 22, 15, 45, 67];
array_push($ids, 100);

Resultat = 10,22,15,45,67,100
(100 bliver tilføjet til sidst)

array_reverse()

Med array_reverse() vender du rækkefølgen om.

$colors = ['red', 'blue', 'green', 'yellow'];
$colors_rev = array_reverse($colors);

print_r($colors_rev);
Array
(
    [0] => yellow
    [1] => green
    [2] => blue
    [3] => red
)

array_shift()

array_shift() fjerne den første værdi i et array()

$ids = [10, 22, 15, 45, 67];
array_shift($ids);

Resultat = 22,15,45,67

array_slice()

Med array_slice() kan du tage en del af et eksisterende array og med den data lave et nyt array.

$ids = [10, 22, 15, 45, 67];

Hvis jeg vil lave et nyt array, som vi kalder $ids2 med tallene 15 og 45 kan jeg:

$ids2 = array_slice($ids, 2, 2);

De 3 parametre fra array_slice er ("hvilket array skal jeg tage data fra", "på hvilket ID skal jeg begynde", "hvor langt skal jeg gå")

array_splice()

Med array_splice() kan du udskifte en værdi i et array.

$ids = [10, 22, 15, 45, 67];

Vi udskifter tallet 22 med tallet 1000

array_splice($ids, 1, 1, 1000);

I array_splice($ids, 1, 1, 1000); betyder det første 1, at vi begynder ved index 1, her indsætter vi tallet 1000.
Det næste 1 betyder, at vi skal fjerne 1 index under det vi lige har indsat.
På den måde fjerne vi tallet 22.

Havde der stået 2 array_splice($ids, 1, 2, 1000); ville både tallet 22 og 15 blive fjernet!

array_sum()

array_sum() lægger alle værdierne sammen som findes i et array.

$tal = [10, 20, 20];
array_sum($tal);

Resultat: 50

array_unshift()

array_unshift() vil tilføje en værdi først i et array()

$ids = [10, 22, 15, 45, 67];
array_unshift($ids, 100);

Resultat = 100,10,22,15,45,67
(100 er tilføjet først)

Arrays

To måder at skrive et array() på:

$navne = array('Markus', 'Thit', 'Ida');
$navne = ['Markus', 'Thit', 'Ida'];

For at skrive "Thit" på skærmen kan vi:

echo $navne[1];

var_dump($navne);

Kan benyttes for dig som PHP programmør til at udskrive info omkrig dit array()
var_dump($navne); giver følgende:

array(3) { [0]=> string(6) "Markus" [1]=> string(4) "Thit" [2]=> string(3) "Ida" }

Vil du have det mere læseligt på skærmen, kan du benytte <pre> ...</pre>.

echo '<pre>';
var_dump($navne);
echo '</pre>';

... eller benytte en function() til fast at vise dine var_dump()

function dump($value) {
echo '<pre>';
var_dump($value);
echo '</pre>';
}
dump($navne);

Tilføje til et Array()

$tal =['1','2','3'];
$tal[] = 4;

Nu har dit Array() værdierne: 1,2,3,4

Ændre værdi i et Array()

$tal =[1, 2, 3];
$tal[1] = 6;

Resultat = 1,6,3 (tallet 2 er udskiftet med tallet 6)

Fjerne en værdi

Du kan fjerne 1 tallet ved unset($tal[0]);

Assignment operator

Læs mere her.

$num = 10;
$num += 20;

Resultat = 30

Det samme som $num = $num + 20;

$num = 10;
$num -= 20;

Resultat = -10

$num = 10;
$num /= 20;

Resultat = 0,5

Associative Arrays

Et associative array i PHP er en datastruktur, hvor hver værdi er knyttet til en nøgle … et ord!
(I stedet for en numerisk indeks).
Nøglerne i et associative array kan være en string, hvilket gør det muligt at få adgang til værdier ved hjælp af meningsfulde navne i stedet for tal.

$user = [
'forNavn' => 'Morten',
'efterNavn' => 'Andersen',
'instrument' => ['guitar', 'bas']
];

Vi opretter her 3 forskellige $output som vi kan echo ...

$output = 'Fornavnet er: ' . $user['forNavn'];
$output = 'Efternavnet er: ' . $user['efterNavn'];
$output = 'Instrument: ' . $user['instrument'][0];

echo $output;

Første resultat vil være: "Fornavnet er: Morten"
Andet resultat vil være: "Efternavnet er: Andersen"

Ved tredje ... den med instrument vil resultatet være: "guitar"
Hvis det havde været $user['instrument'][1] ville det være: "bas"

Break

Med break kan du stoppe et loop før det er færdigt.

for ($i = 0; $i < 10; $i++ ) {
  if ( $i == 5){
    break;
  }
  echo $i . ' <br />';
}

Resultat:

0
1
2
3
4

I første omgang beder vi loopet om at køre indtil $i værdien er lige under 10, men vi stopper loopet i at køre så snart $i er lige med 5

Comparison Operators

== Lige med
=== identisk med
!= Ikke lige med
<> Ikke lige med
!== Ikke identisk med
< Mindre end
> Større end
<= Mindre end eller lige med
= Større end eller lige med

Forskellen på == og ===

$x = 10; // et tal (Integer)
$y = '10'; // en tekst (String)
var_dump($x == $y);

Resultat: bool(true)
$x og $y er ens, da == ikke tjekker for om det er et tal eller en tekst!

$x = 10; // et tal (Integer)
$y = '10'; // en tekst (String)
var_dump($x === $y);

Resultat: bool(false)
$x og $y er IKKE identiske, da === tjekker om det er et tal eller en tekst!

Det samme forhold gælder ved != og !==

Constants

Du kan både benytte define() og const() når du opretter en Constant (konstant).
En konstant er som navnet antyder, en værdi der IKKE ændres modsat en variable()
Constants er global scope så de kan benytte overalt i din PHP kode!

define('WP_TEMA', 'Mit fantastiske WordPress tema');
define('WP_VERSION', '1.0.0');
echo WP_TEMA . ' ver.: ' . WP_VERSION;

Resultat: Mit fantastiske WordPress tema ver.: 1.0.0

const DB_NAME = 'mydb';
const DB_HOST = 'localhost';
echo 'Database: ' . DB_NAME . ', Host: ' . DB_HOST;

Resultat: Database: mydb, Host: localhost

Continue

Med continue kan du bede loopet om ikke at udføre, hvad det nu skal, når en betingelse er opfyldt. Bagefter kører loopet videre.

for ($i = 1; $i < 10; $i++ ) {
  if ( $i == 5){
    continue;
  }
  echo $i . ' <br />';
}

Resultat:

1
2
3
4
6
7
8
9

Tallet 5 er ikke med!

count()

Som et eksempel tæller vi antallet af data i et Array med navet ids

$ids = [10, 22, 15,45,67];
count($ids);

Resultat = 5

Data Types

String: Bogstaver, tal eller tegn der skal angives imellem ‘…’ eller “…”

Integer: Hele tal som er positive eller negative
(skal ikke angives imellem anførselstegn, da det så er en string!)

Float: Decimaltal (der benyttes . (punktum) ikke , (komma))

Boolean: True eller False

Array: kan indeholde flere værdier

Object:

Null: En Variable med ingen værdi

Resource: Eksempelvis en ekstern fil

Date()

'Y' = år
'm' = måned
'd' = dag (1-31)
'D' = dag kort navn
'l' = dagens fulde navn
'h' = timer (12)
'H' = timer (24)
'i' = minutter
's' = sekunder
'a' = AM/PM

date_default_timezone_set('Europe/Copenhagen');
$output = date('H:i');

Resultat timer:minutter lige nu i danmark

Læs mere her.

do-while loop

Et do-while loop køre ALTID en gang før den tjekker betingelserne.
Modsat et while loop som tjekker før den afvikler!

$i=0;

do{
    echo $i;
    $i++;
} while ($i < 10);

Det betyder at sætter vi $i = 100

$i=100;

do{
    echo $i;
    $i++;
} while ($i < 10);

... så vil den echo tallet 100, da den først tjekker om $i < 10 efter først gang loppet kører.

Echo

<?php echo 'Her er en kort tekst' ?>
<?= 'Her er en kortere måde at skrive på' ?>
<?= '<h2>Her er der tilføjet HTML elmenterne H2</h2>' ?>

Man kan opdele echo med komme (,) for at vise flere elementer:

<?php echo 'Morten', 'Andersen'; ?>

Resultat:
MortenAndersen
(Uden mellemrum!)
Det kan man IKKE med print!

explode()

Med explode() kan du ændre en string (tekst) til et array

$instrumenter = 'guitar,bas,trommer';
$instrumneter_array = explode(',', $instrumenter);

For at printe det på skærmen kan vi var_dump($instrumneter_array);

Resultat:

array(3) { [0]=> string(6) "guitar" [1]=> string(3) "bas" [2]=> string(7) "trommer" }

For Loop

Et for-loop i PHP bruges til at gentage en blok af kode et bestemt antal gange.

for (initialisering; betingelse; opdatering) {
// Kode der skal gentages
}

  • initialisering: Her angives en startværdi for en variabel, som ofte bruges til at tælle antallet af gennemløb.
  • betingelse: Dette er den betingelse, der skal være sand for at loopen fortsætter. Hvis betingelsen bliver falsk, stopper loopen.
  • opdatering: Efter hver gennemløb af koden opdateres variablen (f.eks. øges med 1).

Her printer vi tallene 0 til og med 10:

for($i = 0; $i <= 10; $i++) {
echo $i . '<br />';
}

<br /> er kun for at skifte linje så talene står nedad på skærmen!

Vi kan selvfølgelig også vende loopet rundt, så vi begynder med 10 og ender med talle 0.

for($i = 10; $i >= 0; $i--) {
  echo $i . '<br />';
}

Her en simpel måde at skrive det op i en HTML liste:

echo '<ul>';
for ($i = 0; $i <= 10; $i++) : 
echo '<li>Nummer:' . $i . '</li>';
 endfor; 
echo '</ul>';

Foreach loop – associative array

$users = [
  ['name' => 'Sus', 'email' => 'sus@email.com'],
  ['name' => 'Markus', 'email' => 'markus@email.com'],
  ['name' => 'Ida', 'email' => 'ida@email.com'],
  ['name' => 'Thit', 'email' => 'thit@email.com']
];

For at printe navn og email

foreach($users as $user) :
  echo $user['name'] .' - ' . $user['email'] . '<br />';
endforeach;

Resultat:
Sus - sus@email.com
Markus - markus@email.com
Ida - ida@email.com
Thit - thit@email.com

Med $key og $value

foreach($users as $user) :
  foreach($user as $key => $value) :
    echo $key . ': ' . $value .'<br />';
  endforeach;
endforeach;

Resultat:
name: Sus
email: sus@email.com
name: Markus
email: markus@email.com
name: Ida
email: ida@email.com
name: Thit
email: thit@email.com

function()

En PHP function i sin mest simple form.
En function skal altid “kaldes” før den udføres!

function sayHallo(){ 
  echo 'Hello World';
}

sayHallo();

Resultat:
Hello World

Typisk vil du benytte return til at "gemme" indholdet af funktionen for så senere at printe den.

function farvel() {
  return 'Farvel min ven';
}

echo farvel();

Resultat:
Farvel min ven

En function kan indholde variables

function plus($a, $b) {
  return $a + $b;
}
echo plus(7, 13);

Resultat: 20

Giv dine variables en default værdi for at undgå PHP fejl.
Hvis du har glemt at angive to tal, når du skriver echo plus();

function plus($a = 0, $b = 0) {
  return $a + $b;
}
echo plus();

Resultat: 0 ... og ikke en PHP fejl!

Splat Operator
Hvis du eksempelvis ikke ved hvor mange tal der indtaste kan du benytte Splat Operator.
( de tre små prikker ...)

function plusAlle(...$numbers){
  $sum = 0;
  foreach ($numbers as $number){
    $sum += $number;
  }
  return $sum;
}
echo plusAlle(1,2,3,4,5);

Resultat: 15

If

if (betingelse) {
  // indholdet eksekveres hvis betingelsen er opfyldt
}

Et simpelt eksempel hvor vi tjekker om du er myndig.

$alder = 23;
if ($alder >= 18) {
  echo 'Du er myndig';
}

Resultat:
Du er myndig

If-Else hvor vi giver et svar hvis betingelsen ikke er opfyldt

$alder = 17;
if ($alder >= 18) {
  echo 'Du er myndig';
} else {
  echo 'Du er ikke myndig';
}

Resultat:
Du er ikke myndig

implode()

Med implode() kan du ændre et array til en string

$navne = ['Jens', 'Birthe', 'Oles'];
$output = implode(', ', $navne);

Hvis vi nu printer (echo) $output vil vi få:
Jens, Birthe, Oles

in_array()

Giver et Boolean værdi (true / false)

$navne = ['Jens', 'Birthe', 'Ole'];
var_dump(in_array('Ole', $navne));

Her er resultatet true da Ole findes i et array der hedder $navne

if(in_array('Ole', $navne)){
$output = 'Ole findes';
} else {
$output = 'Ole er ikke mere!';
}

Logical Operators

and eller && Sandt hvis begge er sande
or eller || Sandt hvis en af dem er sande
xor Sandt hvis en er sand
! Sandt hvis det ikke er sandt

$a = 10;
$b = 20;
var_dump($a == 10 && $b == 20);

Resultat: bool(true)

$a = 9;
$b = 20;
var_dump($a == 10 || $b == 20);

Resultat: bool(true)
...da en af dem er rigtige!

$a = 10;
var_dump(!($a == 5));

Resultat: bool(true)
... da $a jo er 10 er udsagnet sandt .... altså at $a IKKE er lige med 5

Looping Through Arrays

For Loop

Vi har et Array() = $navne

$navne = ['Markus Andersen', 'Astrid Hytten', 'Lone Bundsgaard', 'Ole Jensen'];

Et simplet for loop der printer navne i $navne

for ($i = 0; $i < count($navne); $i++){
  echo $navne[$i] . '<br />';
}

Resultat:
Markus Andersen
Astrid Hytten
Lone Bundsgaard
Ole Jensen

count($navne)

Tæller hvor mange navne der findes i vores array

echo $navne[$i]

Printer det aktuelle index i vores array når loopet kører.

Foreach loop

En mere elegant metode er med foreach()

foreach($navne as $navn) {
  echo $navn .'<br />';
}

eller

foreach($navne as $navn) :
  echo $navn .'<br />';
endforeach;

Multi-Dimensional Arrays

Multi-Dimensional Arrays i PHP er arrays, der indeholder andre arrays som deres elementer.
Dette gør det muligt at oprette tabeller af data.

Eksempelvis en tabel med rækker og kolonner, hvor hver række er et array.
Du kan få adgang til elementerne i et multidimensionel array ved at bruge flere indekser, f.eks. $array[række][kolonne].

$frugter = [
['Æbel', 'Grøn'],
['Appelsin', 'Orange'],
['Banan', 'Gul']
];

For at echo ordet "Gul" som kommer fra "Banan-array" skal vi skrive:

echo $frugter[2][1];

[2] = Banan og i "Banan-array" har "Gul" index = 1

Et eksempel med associative array 

$users = [
['forNavn' => 'Morten', 'efterNavn' => 'Andersen', 'hobby' => 'At mixe musik'],
['forNavn' => 'Lise', 'efterNavn' => 'Hansen', 'hobby' => 'At spille blokfløjte'],
['forNavn' => 'Tina', 'efterNavn' => 'Jensen', 'hobby' => 'At strikke i uld']
];

Hvis vi vil echo Lises hobby skal vi:

echo $users[1]['hobby'];

Nested for loop

for ($i = 0; $i < 3; $i++){
    for ($j = 0; $j < 3; $j++){
        echo $i . ' - ' . $j . '<br />';
    }
}

Resultat:

0 - 0
0 - 1
0 - 2
1 - 0
1 - 1
1 - 2
2 - 0
2 - 1
2 - 2

Nested while loop

$i = 0;
while ($i < 3) {
    $j = 0;
    while ($j < 3 ) {
        echo $i . ' - ' . $j . '<br />';
        $j++;
    }
    $i++;
}

Resultat

0 - 0
0 - 1
0 - 2
1 - 0
1 - 1
1 - 2
2 - 0
2 - 1
2 - 2

Null Coalescing Operator

I PHP bruges Null Coalescing Operator (??) til at returnere den første værdi, der ikke er null, blandt flere alternativer.
Det er ofte brugt til at håndtere situationer, hvor en variabel muligvis ikke er sat.

Her er forskellen på Ternary Operator og Null Coalescing Operator

$favColor = 'red';
// Ternary Operator
// $color = isset($favColor) ? $favColor : 'blue';

// Null Coalescing Operator
$color = $favColor ?? 'blue';
echo $color;

Når der kommer flere variabler bliver denne metode så meget nemmere

$favColor = 'red';
$favColorSec = 'yellow';
// Ternary Operator
// $color = isset($favColor) ? $favColor : (isset($favColorSec) ? $favColorSec : 'blue');

// Null Coalescing Operator
 $color = $favColor ?? $favColorSec ?? 'blue';
echo $color;

number_format()

Som navnet antyder benyttes number_format()til at formatere tal.

Har du eksempelvis variabel $loen (løn) som indeholder et uformateret tal, kan du lave en function der formaterer tallet:

function formatLoen($loen) {
  return number_format($loen, 2, ',', '.') . ' kr.';
}

Når du kalder variablen $loen kan du bruge funktionen ved at kalden den på følgende måde:

formatLoen($loen):

Resultat kunne se ud som: 35.000,00 kr

Formatet på number_format($loen, 2, ',', '.') . ' kr.'; :
Først indsætte funktionens variabel $loen. 2 betyder to decimaler, det efterfølgende komma at der skal benyttes komma foran øre decimalerne. Punktumet er tusindtals separatoren. Til sidst printer vi "kr.".

Print

<?php print 'Hej verden'; ?>

print er mere simpel end echo og benyttes derfor sjældnere!

sort()

Vi kan sortere indholdet i et array() vi sort()

$ids = [10, 22, 15, 45, 67];
sort($ids);

Her vil vi nu få tallene i den "rigtige" rækkefølge:
10,15,22,45,67
(15 og 22 har bytte plads!)

Vi kan benytte rsort() til at vende rækkefølgen om, så den største værdi kommer først.

String Concatenation

$fornavn = 'Morten';
$efternavn = 'Andersen';
$navn = $fornavn . ' ' . $efternavn;
echo 'Mit navn er: ' . $navn;

En løsning med det almindelige anførselstegn.

echo "Mit navn er: $navn";

Resultat: Mit navn er: Morten Andersen

Læs mere her

switch()

$dayOfWeek = date('l');
  
  switch ($dayOfWeek) {
    case 'Monday':
      $message = 'Monday Blues!';
      $color = 'blue';
      break;
    case 'Tuesday':
      $message = "At least it's not Monday!";
      $color = 'green';
      break;
    case 'Wednesday':
      $message = 'Hum Day!';
      $color = 'Orange';
      break;
    case 'Thursday':
      $message = 'One more day until friday!';
      $color = 'red';
      break;
    case 'Friday':
      $message = 'TGIF!';
      $color = 'purple';
      break;
    case 'Saturaday':
      $message = 'Have a nice weekend!';
      $color = 'magenta';
      break;
    case 'Sunday':
      $message = 'Have a nice weekend!';
      $color = 'magenta';
      break;
  }

Tal funktioner

rand() viser et tilfældigt tal

$output = rand(1, 10); et tilfældigt tal imellem 1 og 10

round(3.7) = 4 (runder op eller ned)

ceil(4.2) = 5 (runder altid op)

floor(7.8) = 7 (runder altid ned)

sqrt(16) = 4 (kvadratroden af 16)

pi() = pi

abs(-3.7) = 3,7 (absolut værdi … positiv)

max(1, 4, 12, 50) = 50 (max værdien)

min(1, 4, 12, 50) = 1 (min værdien)

number_format(27375.750, 2, ',', '.') = 27.375,75
Først det givne tal, derefter antallet af decimaler (2), derefter tegnet der skal benyttes foran decimalerne (komma) og til sidst angiver vi tusindtals separator som her er punktum.

Tekst (string) funktioner

$string = 'Morten Andersen';

strlen($string) = 15 (15 tegn … og mellemrum)

str_word_count($string) = 2 ord

strpos($string, 'Andersen') = 7 (Andersen begynder på det 7 tegn ud af de 15 i alt)

$string[7] = A (tegn nr. 7)

substr($string, 7, 3) = And (Begynd ved tegn nr. 7 og vis 3 tegn derfra)

str_replace('Morten', 'Sus', $string) = Sus Andersen … min kone 😉 (Find “Morten” og udskift det med “Sus”)

strtolower($string) = morten andersen (Små bogstaver)

strtoupper($string) = MORTEN ANDERSEN (kun store bogstaver)

ucwords($string) = Morten Andersen (stort begyndelsesbogstav)

trim(' Her er IKKE tomme tegn først i sætningen')

Ternary Operator

$variable = (condition) ? true_value : false_value;

I PHP er ternary-operatoren en kort form for en if-else-sætning.
Den bruges til at evaluere en betingelse og returnere én værdi, hvis betingelsen er sand, og en anden værdi, hvis den er falsk.

Med if/else

$point = 50;
if ($point > 40) {
  echo 'Du har mange point';
} else {
  echo 'Du har ikke så mange point';
}

Den mere enkle Ternary Operator form

$point = 50;
echo $point > 40 ? 'Du har mange point' : 'Du har ikke så mange point';

Du vil typisk sætte det ind i en variabel - $hvorMangePoint

$point = 50;
$hvorMangePoint = $point > 40 ? 'Du har mange point' : 'Du har ikke så mange point';
echo $hvorMangePoint;

Resultatet er alle gange:
Du har mange point

Type Casting & Juggling

$number1 = 5;
$number2 = 10;
$number3 = '20';

$result = $number1 + $number2;
var_dump($result);

Resultat af dump: int(15)

String to int conversion.

$result = $number1 + $number3;
var_dump($result);

Resultat af dump: int(25)
$number3 er jo en string (tekst) og ikke et tal, men PHP ændre teksten '20' til tallet 20

String Concatenation

$resultat = $number1 . $number2;
var_dump($result);

Resultat: string(3) "510"

Explicit Conversion

$resulat = (string) $number1;
var_dump($resulat);

Resultat: string(1) "5"

Variables

Læs mere her

Definition: I PHP er variabler symboler, der bruges til at gemme data, og som kan ændres under programmets kørsel.

$navn = 'Morten Andersen';

Her $navn en variabel og mit navn er en string

  1. Starter altid med $-tegnet efterfulgt af et navn, fx $navn.
  2. Er case-sensitive, så $navn og $Navn er forskellige variabler.
  3. Kan indeholde forskellige typer data, som tal, strenge, arrays eller objekter.
  4. Bliver oprettet, når de tildeles en værdi, fx $alder = 25;.

While loop

$i = 0;

while($i < 10 ){
 echo $i . '<br />';
 $i++;
}

Resultat er tallene 0 til og med 9