On Thu, Nov 10, 2011 at 11:24 AM, Matijn Woudt <tijnema@xxxxxxxxx> wrote: > On Thu, Nov 10, 2011 at 5:42 PM, Jim Lucas <lists@xxxxxxxxx> wrote: >> On 11/10/2011 6:45 AM, Bastien Koert wrote: >>> Morning all, >>> >>> I've been having some fun with converting a text data file import into >>> a json object for storage. >>> >>> I have a text file that is pipe delimited coming in via an upload. The >>> first row is the headers and the second row is the data. >>> >>> Using this code: >>> >>> $data = file("inline_Nov_8_2011.txt"); >>> >>> if(count($data)==2){ >>> >>> $keys = explode("|", $data[0]); >>> $fields = explode("|", $data[1]); >>> >>> $combine = array_combine($keys, $fields); >>> >>> $json = json_encode($combine); >>> } >>> >>> After the combine, I get an array that looks like this >>> >>> Array >>> ( >>> ['Legal Last Name '] => Andros >>> ['Legal Middle Initial '] => >>> ['Legal First Name '] => Marisa >>> ['Maiden/Other Name '] => >>> ['Social Insurance No. '] => 123456789 >>> ['Date of Birth '] => 2/1/1988 >>> ['Gender '] => Female >>> ) >>> >>> But the json encoded value looks like this (there are way more >>> elements but this should be enough to represent what I need to do). >>> >>> {null:"Andros",null:"",null:"Marisa",null:"",null:"123456789",null:"2\/1\/1988",null:"Female"} >>> >>> I have been googling for info about allowed values for the json keys, >>> but can't seem to find a clear doc on what is allowed and what isn't. >>> I have tried unquoted keys, replaced the spaced with underscores but >>> nothing I do seems to help. >>> >>> When I echo out the json encoded data, the keys are all nulls. >>> >>> Can someone point me in the correct direction? It may be that I need >>> to manually create the key names as an array first, which I was hoping >>> to avoid since the file format coming from the client is still in some >>> flux. >>> >> >> Looking at your input array example, I see that you have trailing spaces in your >> keys. Looking at the working example of DiRaven, the only difference that I see >> with his example is that the input key values do not have a trailing spaces. >> json is probably having an issue with that trailing spaces. >> > > That might be a possibility, but I suspect that the single quotes > around the keys might be a problem. I haven't tried it though. > > Matijn > > -- > PHP General Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php > > Maybe use preg_split instead of explode? '/\s*|\s*/' -- assuming the spaces between fields aren't important... -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php