PHP / jQuery – Как преобразовать многомерный массив PHP в строку JSON?

Как сказано в заголовке, я пытаюсь использовать Bootstrap's Typeahead.js, и для этого требуется строка JSON, подобная этому

var subjects = ['PHP', 'MySQL', 'SQL', 'PostgreSQL', 'HTML', 'CSS', 'HTML5', 'CSS3', 'JSON']; 

Но у меня есть многомерный массив, который при выполнении json_encode возвращает следующее

 [{"username":"Test1"},{"username":"Test2"},{"username":"Test3"},{"username":"Test4"},{"username":"Test5"},{"username":"Test6"}] 

Typeahead.js выдает ошибки при попытке использовать этот массив.

Как бы преобразовать многомерное, чтобы он выглядел как пример?

Исходный PHP-массив

 Array ( [0] => Array ( [username] => Test1 ) [1] => Array ( [username] => Test2 ) [2] => Array ( [username] => Test3 ) [3] => Array ( [username] => Test4 ) [4] => Array ( [username] => Test5 ) [5] => Array ( [username] => Test6 ) ) Desired outcome would be var subjects = ['Test1', 'Test2', 'Test3', 'Test4', 'Test5', 'Test6']; 

Ваш исходный массив 2-мерный. Вам нужно получить элементы каждого подматрица, а затем преобразовать их в JSON:

 echo json_encode(array_map(function($x) { return $x['username']; }, $original_array)); 

Кроме того, вы можете исправить любой код, создающий исходный массив. Почему он помещает ассоциативный массив в каждый элемент, а не только сами имена пользователей? Нет смысла указывать, что они являются ассоциативными массивами, если они имеют только один элемент, всегда с одним и тем же ключом.

Итак, сначала вам нужно создать массив PHP, в котором есть то, что вам нужно. Затем процесс кодирования JSON автоматически выдаст правильный результат. Вы должны принять ответ Бармара:

 $flat_array = array_map(function($x) { return $x['username']; }, $array_of_arrays); 

Эти три формы – это просто разные синтаксические соглашения для представления одного и того же объекта – массив из шести строк.

PHP Array литерал:

 Array( 'Test1', 'Test2', 'Test3', 'Test4', 'Test5', 'Test6' ); 

Вывод PHP print_r :

 Array ( [0] => Test1 [1] => Test2 [2] => Test3 [3] => Test4 [4] => Test5 [5] => Test6 ) 

JSON:

 [ "Test1", "Test2", "Test3", "Test4", "Test5", "Test6" ] 

Этот последний, конечно, также является синтаксисом литерала массива для JavaScript (поскольку JSON является стандартным подмножеством литерального синтаксиса Javascript). Он также работает на нескольких других языках, включая Perl, Python, Ruby, Haskell, Clojure, Erlang …

Но дело в том, что структура – это то, о чем вы заботитесь. JSON – это просто синтаксис, легко преобразованный в и из.