Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[php] Globale variabele wordt buiten functie doorgezet?

Pagina: 1
Acties:
  • 276 views

  • Hatsieflatsie
  • Registratie: Oktober 2011
  • Laatst online: 20-11 21:25
In de functie scopeTest maak ik de $a en $b globaal, zodat ze ook binnenin de functie gebruikt kunnen worden. Dat gaat als volgt:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 

<?php 

$a = 5;
$b = 10;

function scopeTest(){
    global $a, $b;
    $b = $a + $b; // local
    echo $b."<br/>";
    return $b;
}
scopeTest();
echo $b;

?>


Dit levert de volgende output op:
15
15
Dit bevreemdt mij. Ik had verwacht dat het 15 en 10 zou worden. Begrijp ik nu goed dat wanneer je binnen een functie een variabele globaal maakt, het gelijkschakelen van een variabele aan een waarde, ook buiten de functie van toepassing is? :)

  • Radiant
  • Registratie: Juli 2003
  • Niet online

Radiant

Certified MS Bob Administrator

Dat begrijp je goed. Als je dat niet wil moet je de global variabele naar een local kopiëren en daarop je bewerkingen doen.

  • johnkeates
  • Registratie: Februari 2008
  • Laatst online: 04-07 16:30
$b = $a + $b; // local

daar ga je de mist in, dat is niet local in php

  • ZpAz
  • Registratie: September 2005
  • Laatst online: 00:48
Wat je met global zegt is "deze variabelen" zitten in de "global scope" (dus niet in de scope van de functie) wanneer je deze tegenkomt in deze functie en je vind ze niet in de scope van de functie moet je niet een error weergeven maar de variabelen uit de globale scope halen.

Als je die variabelen dan aanpast pas je de waarden ook dus globaal aan, en niet "binnen de functie".

[ Voor 8% gewijzigd door ZpAz op 31-10-2013 14:57 ]

Claude: "Domain patterns emerge from iteration, not generation." - Tweakers Time Machine Extension | Chrome : FF


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 15:09

Creepy

Tactical Espionage Splatterer

Het staat zelfs letterlijk uitgelegd in de PHP manual inclusief voorbeeld code (gewoon ff googlen op php en global): http://php.net/manual/en/language.variables.scope.php . Dus doe de volgende keer aub zelf wat moeite. Dat hebben we vaker uitgelegd maar je blijft maar vragen stelen zonder zelf onderzoek te doen. Volgende keer gaat het slotje dan ook gepaard met een tijdelijke ban.

[ Voor 8% gewijzigd door Creepy op 31-10-2013 15:15 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

johnkeates schreef op donderdag 31 oktober 2013 @ 14:48:
$b = $a + $b; // local

daar ga je de mist in, dat is niet local in php
Even ter verduidelijking achter Creepy's slotje aan: dat is niet local in geen enkele taal die ik ken. Als je aangeeft dat een variabele die je gebruikt globaal is (op welke manier dat dan ook gangbaar is in de betreffende taal) dan zijn alle bewerkingen die je op die variabele doet dan ook globaal.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1

Dit topic is gesloten.