[php] intval resulteert in 0

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Voor het omzetten van een csv naar mysql lees ik een bestand uit en zet dat in arrays.

De eerste entry van die array is altijd een nummer, de primary key voor de db.

Dit nummer moet als integer in de tabel worden opgeslagen.

PHP:
1
2
3
4
//var $entry bevat een regel als array
$entry = explode(",",$regel);

$id = intval($entry[0]);


$entry[0] is een string die alleen getallen bevat en toch geeft intval een 0 terug
|:(
hoe kan dat

Acties:
  • 0 Henk 'm!

Verwijderd

Heb je al geprobeerd de hele array $entry op het scherm te zetten? Dan kun je zien wat de gehele inhoud van je array is (gebruik hiervoor bijvoorbeeld print_r()) en dus ook zien wat er eventueel ontbreekt of op een verkeerde plaats is gezet!

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ja heb ik gedaan, resulteert in:

Array ( [0] => "5453" [1] => "Iris" [2] => "de" [3] => "Boer" [4] => "B 4HV1" [5] => "BCM" [6] => "ENSC" )

zoals je kunt zien is de eerst entry een string met cijfers.

Acties:
  • 0 Henk 'm!

  • Cyphax
  • Registratie: November 2000
  • Laatst online: 13:46

Cyphax

Moderator LNX
http://nl.php.net/manual/en/function.intval.php
Description
int intval ( mixed var [, int base])

Returns the integer value of var, using the specified base for the conversion (the default is base 10).

var may be any scalar type. You cannot use intval() on arrays or objects.

Note: The base argument for intval() has no effect unless the var argument is a string.

See also floatval(), strval(), settype() and Type juggling.
Zou dat niet kunnen?

[ Voor 4% gewijzigd door Cyphax op 08-12-2003 11:24 ]

Saved by the buoyancy of citrus


Acties:
  • 0 Henk 'm!

Verwijderd

Dat lijkt me inderdaad wel het probleem ja :)

Dat ik daar niet op gekomen ben zeg, dom dom dom 8)7

Acties:
  • 0 Henk 'm!

  • Cyphax
  • Registratie: November 2000
  • Laatst online: 13:46

Cyphax

Moderator LNX
Verwijderd schreef op 08 december 2003 @ 11:27:
Dat lijkt me inderdaad wel het probleem ja :)

Dat ik daar niet op gekomen ben zeg, dom dom dom 8)7
Kan je niet gewoon die waarde gebruiken? Voor PHP maakt het toch niet zoveel uit wat voor type het is?

Saved by the buoyancy of citrus


Acties:
  • 0 Henk 'm!

Verwijderd

Dat ligt er wel een beetje aan waarvoor je het wilt gebruiken, maar in principe kun je inderdaad gewoon "$id = $entry[0];" doen ja.... Dat zou gewoon moeten werken inderdaad!

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
cyphax, dat lijkt me niet het probleem.

het niet gebruiken van intval op arrays is natuurlijk logisch maar dat doe ik ook niet:

PHP:
1
intval($ar[0])


lijkt mij wezenlijk verschillen van

PHP:
1
intval($ar)


ik zal even proberen of de integer niet direct nodig is. Maar zelfs al is dat zo dan vind ik het nog steeds niet logisch.

Acties:
  • 0 Henk 'm!

  • Cyphax
  • Registratie: November 2000
  • Laatst online: 13:46

Cyphax

Moderator LNX
Verwijderd schreef op 08 december 2003 @ 11:33:
cyphax, dat lijkt me niet het probleem.

het niet gebruiken van intval op arrays is natuurlijk logisch maar dat doe ik ook niet:

PHP:
1
intval($ar[0])


lijkt mij wezenlijk verschillen van

PHP:
1
intval($ar)


ik zal even proberen of de integer niet direct nodig is. Maar zelfs al is dat zo dan vind ik het nog steeds niet logisch.
Ik ben er ook niet zeker van, het staat alleen zo in de manual, ik had het even opgezocht :)
Ik kan het niet testen hier op school anders had ik dat wel gedaan. :)
Ik kan ook geen andere reden verzinnen zogauw waardoor het niet wil werken.
Verwijderd schreef op 08 december 2003 @ 11:31:
Dat ligt er wel een beetje aan waarvoor je het wilt gebruiken, maar in principe kun je inderdaad gewoon "$id = $entry[0];" doen ja.... Dat zou gewoon moeten werken inderdaad!
'k Hoop het, ben je meteen klaar. :)

[ Voor 22% gewijzigd door Cyphax op 08-12-2003 11:44 ]

Saved by the buoyancy of citrus


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
mensen, mijn fout. |:(

in de array staan de qoutes uit het csv bestand nog om de strings heen.
Allemaal volstrekt logische resultaten dan.

Toch bedankt voor de inzet _/-\o_

Acties:
  • 0 Henk 'm!

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Verwijderd schreef op 08 december 2003 @ 11:31:
Dat ligt er wel een beetje aan waarvoor je het wilt gebruiken, maar in principe kun je inderdaad gewoon "$id = $entry[0];" doen ja.... Dat zou gewoon moeten werken inderdaad!
Wat gebeurt er als je een verkeerd opgemaakte CSV opgeeft? Waardoor veld 0 een string bevat?

Struisvogelpolitiek |:(

Dit werkt wel...
code:
1
$id=(int) $entry[0];


[edit]
Ik had de laatste post nog niet gezien...

[ Voor 7% gewijzigd door LuCarD op 08-12-2003 11:46 ]

Programmer - an organism that turns coffee into software.


Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Cyphax schreef op 08 december 2003 @ 11:37:
Ik ben er ook niet zeker van, het staat alleen zo in de manual, ik had het even opgezocht :)
Ik kan het niet testen hier op school anders had ik dat wel gedaan. :)
Ik kan ook geen andere reden verzinnen zogauw waardoor het niet wil werken.
't Is toch niet zo moeilijk:
$a = 0; -> integer
$b = array(0); -> array
$b[0] -> integer

Of er in php een verschil zit tussen intval($x) en (int)$x weet ik niet, de eerste is wellicht wat handiger met scopes.
Maar beide gaan fout als er geen integerstring gegeven is ;)
Pagina: 1