[PHP] Type casting met variable ?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Bolukan
  • Registratie: Oktober 2002
  • Laatst online: 23-07 19:05
Hoi,

Graag zou ik de type van een variabele als variabele willen bepalen.
code:
1
2
3
4
5
6
// Dit kan
$var = (string) $value;

// maar kan dit ook?
$type = "string";
$var = ($type) $value;

Ik heb accolades geprobeerd, dat hielp me niet. Kan het wel?

Gerard

Acties:
  • 0 Henk 'm!

  • eghie
  • Registratie: Februari 2002
  • Niet online

eghie

Spoken words!

Lelijke manier, maar je zou het zo kunnen doen:
PHP:
1
eval('$var = (' . $type . ') $value;');


Maar waarom doe je het zo? Wat wil je uiteindelijk bereiken?

Acties:
  • 0 Henk 'm!

  • killercow
  • Registratie: Maart 2000
  • Laatst online: 07-08 20:49

killercow

eth0

kun je het niet met settype doen?

settype($$varname,$vartype)

openkat.nl al gezien?


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 06-08 02:35

NMe

Quia Ego Sic Dico.

killercow schreef op zaterdag 05 augustus 2006 @ 21:44:
kun je het niet met settype doen?

settype($$varname,$vartype)
Die dubbele $ moet daar wel een enkele worden. :)

'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.


Acties:
  • 0 Henk 'm!

  • Bolukan
  • Registratie: Oktober 2002
  • Laatst online: 23-07 19:05
Ik wil het gebruiken bij

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$FieldsRecord = array(
  array("naam", "string"), 
   array("leeftijd", "integer"),
   array("getal", "integer"),
   array("koosnaam", "string"));

 $record = array();
 $sql = "select naam, leeftijd, getal, koosnaam FROM xx WHERE leeftijd=12";
 $res = DoQuery($sql);
 while ($row = mysql_fetch_array($res, MYSQL_ASSOC)) {
   foreach ($FieldsRecord AS $key => $arr) {
         $record[] = ($arr[1]) $row[$arr[0]];
   }
 }

Acties:
  • 0 Henk 'm!

  • killercow
  • Registratie: Maart 2000
  • Laatst online: 07-08 20:49

killercow

eth0

-NMe- schreef op zaterdag 05 augustus 2006 @ 21:47:
[...]

Die dubbele $ moet daar wel een enkele worden. :)
Klopt, als $varname, je variabele is wel ja,

Maar ik had het gevoel dat hij wellicht zo iets wilde doen:

setmytype($varname,$type){
// deze functie doet allerlei wazige zooi, en zet daarna het type van de ingevoerde variabele naam (niet reference) naar het opgegeven type), waarbij je dus een variabele variabele moet gebruiken (aka dubbel $)
}

Ik snap niet precies was het nut er van is, om output allerlei types te geven, je kunt beter je input grondig checken.

setype($_REQUEST['leeftijd'],'integer')
setype($_REQUEST['id'],'integer')

als je iets op gaat slaan enzo.

[ Voor 18% gewijzigd door killercow op 05-08-2006 21:58 ]

openkat.nl al gezien?


Acties:
  • 0 Henk 'm!

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 07-08 20:07
Ja en? Heeft het voor de rest nog een meer waarden dat je dynamisch kan gaan bepalen van wat voor type een variabele is. PHP is niet voor niets typeloos, nu ga je het zelf inbouwen? (Dat begrijp ik van je verhaal.) Ik zie de toegevoegde waarde niet van jouw constructie.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 06-08 02:35

NMe

Quia Ego Sic Dico.

Die types zetten voor data die uit je database komt is inderdaad vrij zinloos in PHP. Als het nu nog om gebruikersinvoer ging dan zou ik het nog wel begrijpen, maar spul uit je database moet je kunnen vertrouwen. Daarnaast gaat het toch wel goed met die magische typecasts van PHP, en mocht het niet goed gaan, dan kun je altijd nog handmatig casten.

'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.


Acties:
  • 0 Henk 'm!

  • Bolukan
  • Registratie: Oktober 2002
  • Laatst online: 23-07 19:05
Overtuigd van het niet nuttig toepasbaar zijn van het antwoord op mijn vraag, is het ook niet mogelijk?

Gerard

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 06-08 02:35

NMe

Quia Ego Sic Dico.

Jawel, zoals killercow zei.
PHP:
12
13
         $record[] = $row[$arr[0]];
         settype($record[count($record) - 1], $arr[1]);

'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