2016-07-31 1 views
0

Iアレイを定義し、Iは、json_encode()PHP配列からJavaScriptオブジェクトを返すにはどうすればよいですか?

$array = array("a" => "element1", "b" => "element2"); 
echo json_encode($array); 

とそれをコードする場合、私が正しいJSONで

{"a":"element1","b":"element2"} 

を得ます。しかし、私は次の出力に興味があります:

{a:"element1",b:"element2"} 

PHP 5.2でこれを達成する方法はありますか?

EDIT:私が望む出力が正しいJSONではないことを下降してコメントしたので、「JavaScriptオブジェクト」ではなく「JSON」であることを指摘しておきます。私が働いているシステムは、私が記述したフォーマットを望んでいます、残念ながら私はそれを変更することはできません。

+6

なぜ? JSON '{a:" element1 "、b:" element2 "}'は無効です。 JavaScript {{a: "element1"、b: "element2"} 'は、** {{" a ":" element1 "、" b ":" element2 "}'と同じ**です。 – Quentin

+2

2つは同義語です...最初はJSON.parseを使用して解析することができます - 2番目は –

+0

'{a:" element1 "、b:" element2 "}' javascriptでは無効なjsonです。 '{" a ":" element1 "、" b ":" element2 "}' javascriptの正しいjsonです。 jqueryで '$ .parseJSON'を使用する場合は' JSON.parse'を使用してください –

答えて

1

あなたが指定した無効な形式を絶対に使用する必要がある場合は、独自の関数を記述する必要があります。もちろん、これは実際にはお勧めできません.POPからの無効な出力を強制するのではなく、返されたJSON文字列を解析するためのJSコードを改善する必要があります。

ここでは、あなたが探しているものを達成する必要があり、単純な機能だ(少なくとも与えられた例の配列を持つ - あなたは多次元配列で作業している場合は、それを変更する必要があります):

function custom_json_encode($arr) 
{ 
    $len = count($arr); 
    $i = 1; 
    $json = '{'; 

    foreach($arr as $key => $val) 
    { 
     $json.= $key.':"'.$val.'"'; 
     $json.= ($i < $len) ? ',' : ''; 
     $i++; 
    } 

    $json.= '}'; 

    return $json; 
} 
は、

例のリターン:

{a:"element1",b:"element2"} 

Demo

+0

ここにdownvoteを説明してください。 – BenM

+0

downvoteは私のものではありませんが、概念的には間違っている(現実世界への歓迎)、またはコードが多次元配列で動作しないと答えたので、どちらも怒っていると思います。とにかく、それを変更することについて心配する必要はありません、私はそれを自分で行うことができます:) PHPは、私が記述したことができなかったかどうかでしたか? –

関連する問題