2

Here's my problem, i have a php array like this:

$output = array(array(1,1,1,1),array(2,2,2,2),array(3,3,3,3));

after the array was encoded to json i got this:

$output = {"1":[1,1,1,1],"2":[2,2,2,2],"3":[3,3,3,3]}

all i want is to pass the PHP array to Javascript so that the JS looks like this:

var output = [[1,1,1,1],[2,2,2,2],[3,3,3,3,]];

Thanks in advance...

2 Answers 2

4

Which version of PHP are you using ?

With PHP 5.2.10, I get what you're asking for :

$output = array(array(1,1,1,1),array(2,2,2,2),array(3,3,3,3));
$json = json_encode($output);

echo $json . "\n";

Outputs :

$ php temp.php
[[1,1,1,1],[2,2,2,2],[3,3,3,3]]


At least, this is without the JSON_FORCE_OBJECT option -- that was added in PHP 5.3


Maybe you can find something interesting in the user notes on the json_encode manual page ?

For instance, simoncpu says :

A note of caution: If you are wondering why json_encode() encodes your PHP array as a JSON object instead of a JSON array, you might want to double check your array keys because json_encode() assumes that you array is an object if your keys are not sequential.

And if you search for json_encode+array+object on PHP's bugtracker, maybe you'll get some interesting result ?
(For instance, something that says this was a bug, which has been corrected in recent versions of PHP ?)

Sign up to request clarification or add additional context in comments.

4 Comments

i think there was an error in json_encode in multi-dimentional array...any ideas?
Wow, Trez. Shame on you for treating a good answer so carelessly.
@adam, can u give me other solutions so that it will work in version 5.2.1
sorry guys, i was so confused on the above answers.
0

Your original solution works for me:

adam@fsck:~:0$ php -r 'echo json_encode(array(array(1,1,1,1),array(2,2,2,2),array(3,3,3,3)));'
[[1,1,1,1],[2,2,2,2],[3,3,3,3]]

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.