PHP/jQuery - 如何将多维PHP数组转换为JSON字符串?

Ari*_*ana 4 php arrays jquery json multidimensional-array

正如标题所述,我正在尝试使用Bootstrap的Typeahead.js,它需要一个像这样的JSON字符串

 var subjects = ['PHP', 'MySQL', 'SQL', 'PostgreSQL', 'HTML', 'CSS', 'HTML5', 'CSS3', 'JSON'];  
Run Code Online (Sandbox Code Playgroud)

但我有一个多维数组,在执行json_encode时会返回以下内容

[{"username":"Test1"},{"username":"Test2"},{"username":"Test3"},{"username":"Test4"},{"username":"Test5"},{"username":"Test6"}]
Run Code Online (Sandbox Code Playgroud)

我尝试使用此数组时,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'];
Run Code Online (Sandbox Code Playgroud)

Bar*_*mar 5

您的原始数组是二维的.您需要获取每个子数组的元素,然后将其转换为JSON:

echo json_encode(array_map(function($x) { return $x['username']; }, $original_array));
Run Code Online (Sandbox Code Playgroud)

或者,您可以首先修复创建原始数组的任何代码.为什么在每个元素中放置一个关联数组,而不仅仅是用户名本身?如果他们只有一个元素,总是使用相同的密钥,那么将它们作为关联数组就没有多大意义了.