Как закодировать 2-мерный массив PHP в массив Javascript? - PullRequest
1 голос
/ 12 февраля 2010

Вот моя проблема, у меня есть массив PHP, как это:

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

после того, как массив был закодирован в json, я получил это:

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

все, что я хочу, это передать массив PHP в Javascript, чтобы JS выглядел следующим образом:

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

Заранее спасибо ...

Ответы [ 2 ]

4 голосов
/ 12 февраля 2010

Какую версию PHP вы используете?

С PHP 5.2.10 я получаю то, что вы просите:

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

echo $json . "\n";

Выходы:

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


По крайней мере, это без опции JSON_FORCE_OBJECT - которая была добавлена ​​в PHP 5.3


Может быть, вы найдете что-то интересное в заметках пользователя на странице справки json_encode ?

Например, simoncpu говорит :

Предупреждение: если вы интересно, почему json_encode () кодирует ваш массив PHP как объект JSON вместо массива JSON вы можете хотите дважды проверить ключи массива потому что json_encode () предполагает, что вы массив является объектом, если ваши ключи не последовательный.

И если вы будете искать json_encode + array + object в багтрекере PHP, возможно, вы получите какой-нибудь интересный результат?
(Например, что-то, что говорит о том, что это ошибка, которая была исправлена ​​в последних версиях PHP?)

0 голосов
/ 12 февраля 2010

Ваше оригинальное решение работает для меня:

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]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...