[php] een string(5) "id"

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • xilent_xage
  • Registratie: Februari 2005
  • Laatst online: 15-09 11:35
Soms weet ik het even niet meer. Dan wordt ik stil en staar ik naar mijn scherm. Deze heb ik nog nooit meegemaakt.

Ik werk met een associatieve array, genaamd $data. Ik krijg een foutmelding dat $data['id'] niet bestaat. Ik check de gebruikelijke zaken, maar na een print_r blijkt dat $data['id'] wel degelijk bestaat. Uiteindelijk debug ik met het volgende:

PHP:
1
foreach ( $data as $kdata=>$vdata ){ var_dump($kdata); }


Dit werkt voor alle keys in de array zoals je zou verwachten, behalve voor 'id'. Daar zie ik: string(5) "id". 5? 5???? Schiet mij maar lek.

We gaan het nog gekker maken. Ik debug nu met:

PHP:
1
2
$data['id'] = "test";
print_r($data);


En ik krijg inderdaad een associatieve array uitgeprint met twee 'id's. Er staan dus 3 wazige tekens in het id die ik zelfs met een var_dump niet te zien krijg.

De data is uiteindelijk afkomstig uit een CSV waaraan de nodige bewerkingen worden gedaan. Daar ga ik liever niet in debuggen. Iemand een idee?

Beste antwoord (via xilent_xage op 23-03-2020 17:19)


  • chielsen
  • Registratie: Oktober 2003
  • Laatst online: 04-10 20:27
Of doe eens een json_encode van $data?

Alle reacties


Acties:
  • 0 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
Waarschijnlijk een Wikipedia: Null character

Acties:
  • 0 Henk 'm!

  • orf
  • Registratie: Augustus 2005
  • Nu online

orf

Laat hier eens de print_r en de foutmelding zien?

Acties:
  • Beste antwoord
  • +1 Henk 'm!

  • chielsen
  • Registratie: Oktober 2003
  • Laatst online: 04-10 20:27
Of doe eens een json_encode van $data?

Acties:
  • +1 Henk 'm!

  • dennis1804
  • Registratie: Januari 2017
  • Nu online
is het niet een UTF-8 bom die er stiekem voor staat?

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
xilent_xage schreef op maandag 23 maart 2020 @ 17:01:
De data is uiteindelijk afkomstig uit een CSV waaraan de nodige bewerkingen worden gedaan.
Zit gewoon een tab (of, idd, goeie @dennis1804 een BOM) of andere control-char in die er niet in hoort. Niks engs aan. Ik zou persoonlijk de input even door een functie halen die de input even opschoont voordat je verder gaat. Dat kan een simpele preg_replace alles-wat-geen-digit-is-vervangen-met-lege-string zijn of een intval met een trim of ... you name it. Nogal afhankelijk van je wensen/eisen.

[ Voor 3% gewijzigd door RobIII op 23-03-2020 17:12 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • xilent_xage
  • Registratie: Februari 2005
  • Laatst online: 15-09 11:35
Bedankt voor de snelle suggesties. Als ik em json_encode dan zie ik dat de header van de CSV er als volgt uitziet: ["\ufeffid","afkorting","name","latin","gilde"].

Acties:
  • +2 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
xilent_xage schreef op maandag 23 maart 2020 @ 17:12:
Bedankt voor de snelle suggesties. Als ik em json_encode dan zie ik dat de header van de CSV er als volgt uitziet: ["\ufeffid","afkorting","name","latin","gilde"].
Dat is dus een BOM.

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • xilent_xage
  • Registratie: Februari 2005
  • Laatst online: 15-09 11:35
Bedankt, weer wat geleerd. Wonderlijk dat mijn CSV parser (na plusmin 15 jaar trouwe dienst) daar nooit eerder over gestruikeld is.

Acties:
  • +2 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Als je CSV parser nooit eerder een BOM voor z'n kiezen heeft gehad is dat niet zo raar ;)

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij

Pagina: 1