isset voor lege variabele

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Tivaro

Tivaro

21/06/2007 21:14:00
Quote Anchor link
Ik heb een object met een functie om a.h.v een array variabelen in te stellen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
class object{
  var
$a;
  var
$b;
  var
$c;

  function
setValues($array){
    foreach($array AS $key => $value){
      if(isset($this->$key))$this->$key=$value;
    }
  }
}

?>



Maar omdat isset een variabele die gelijk is aan null en dus var $a; als false meerekend werkt het niet. En moet ik het zo doen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
class object{
  var
$a='';
  var
$b=false;
  var
$c=0;

  function
setValues($array){
    foreach($array AS $key => $value){
      if(isset($this->$key))$this->$key=$value;
    }
  }
}

?>



Wat kan ik gebruiken i.p.v. isset zodat ik gewoorn
var $a;
var $b;

kan gebruiken?
Gewijzigd op 01/01/1970 01:00:00 door Tivaro
 
PHP hulp

PHP hulp

27/11/2024 06:07:15
 
Frank -

Frank -

21/06/2007 21:47:00
Quote Anchor link
var gebruik je in PHP versie 4, in versie 5 is dat vervallen. Gebruik public, private en protected om aan te geven hoe het met de rechten van de variabele zit.

Verder snap ik niet wat nu de bedoeling is, je maakt een paar variabelen aan waar je vervolgens niets mee doet. Wat heeft dit met de foreach te maken?
 
Tivaro

Tivaro

22/06/2007 11:13:00
Quote Anchor link
Je kan de waardes in stellen door:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?PHP
$test
= new object;
$test->setValues(array('a'=>2,'b'=>'Hoi','c'=>'true','d'=>'deze word niet meegerekend'));
?>

[/CODE]
Gewijzigd op 01/01/1970 01:00:00 door Tivaro
 
Frank -

Frank -

22/06/2007 11:47:00
Quote Anchor link
? Nu snap ik het helemaal niet meer. Jij zet in de class een aantal variabelen, $a, $b en $c. De functie setValues laat jij een array doorlopen die toevallig de keys 'a', 'b', 'c' en 'd' bevat. Leg mij nu eens uit wat het verband is tussen deze arraykeys en de variabelen $this->a e.d. die in jouw classe staan? Voor zover ik zie, is daar geen enkel verband tussen en doet jouw code 10x niks met $this->a en zijn vriendjes.

Het zal aan mij liggen, maar ik heb echt geen flauw idee waar je mee bezig bent of wat nu de bedoeling is.
 
PHP erik

PHP erik

22/06/2007 11:51:00
Quote Anchor link
Frank, het ligt niet aan jou.

-knip-

Edit:
Bij nader inzien, ik begrijp inderdaad ook helemaal niets van de vraag.
Gewijzigd op 01/01/1970 01:00:00 door PHP erik
 
PHP erik

PHP erik

22/06/2007 12:01:00
Quote Anchor link
Oh ik denk dat ik het snap. Probeer dit eens:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
function setValues($array){
    foreach($array as $key => $value){
      if(isset($key)) $this->$key = $value;
    }
  }

?>
 
Tivaro

Tivaro

22/06/2007 13:18:00
Quote Anchor link
Werkt niet,
jij controleert of de ket v/d array wel bestaat, wat ik wil is dat gecontroleerd word of de variabele in het object is geinitialiseerd.
Want isset kijkt alleen of die geen null is.
 
Frank -

Frank -

22/06/2007 13:33:00
Quote Anchor link
Waarom zou je van buiten de classe (de array die in de functie stopt) willen controleren of interne variabelen van de classe wel zijn geinitialiseerd? Het zal de buitenwereld een rotzorg zijn of een variabele nu wel of niet bestaat, zolang de classe maar doet wat hij moet doen.

Kun je eens uitleggen waarom je dit wil gaan gebruiken, wat het uiteindelijke doel nu is?
 
Tivaro

Tivaro

22/06/2007 13:44:00
Quote Anchor link
Het uiteindelijke doel is een klasse die het makkelijker maakt forum achtige dingen te bouwen.

Ik heb een mysql query waarbij ik * SELECTEER van een tabel, die query word in variabelen van de klasse gestopt, maar alleen als ze wel bestaan, zo kan je selecteren welke velden je wel of niet wilt.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.