4

タイトルが示すように、Bootstrap の 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'];
4

2 に答える 2

0

したがって、最初に必要なものを含む PHP 配列を作成する必要があります。その後、JSON エンコーディング プロセスにより、正しい結果が自動的に生成されます。Barmarの答えを受け入れる必要があります:

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

これら 3 つの形式は、同じもの (6 つの文字列の配列) を表すための構文規則が異なるだけです。

PHP 配列リテラル:

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

PHPprint_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 は単なる構文であり、簡単に変換できます。

于 2013-10-12T00:06:45.713 に答える