2016-07-31 32 views
0

如果我定義的陣列,並且我與json_encode()如何從PHP數組返回JavaScript對象?

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

編碼它我得到

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

這是正確的JSON。不過我對下面的輸出感興趣:

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

有沒有一種方法可以在PHP 5.2中實現這一點,還是我應該自己實現?

編輯:由於人們開始downvote和評論,我想要的輸出是不正確的JSON,讓我指出,問題讀取「JavaScript對象」,而不是「JSON」。我正在使用的系統需要我描述的格式,可惜我無法改變這一點。

+6

爲什麼?在JSON中'{a:「element1」,b:「element2」}'無效。在JavaScript中,{{a:「element1」,b:「element2」}「**與** {」a「:」element1「,」b「:」element2「}'相同**。 – Quentin

+2

這兩個是同義詞......第一個是能夠使用JSON.parse進行解析 - 第二個不是 –

+0

'{a:「element1」,b:「element2」}'這對於JavaScript是無效的json。 '{「a」:「element1」,「b」:「element2」}'是javascript正確的json。如果在jquery中使用javascript或'$ .parseJSON',則使用'JSON.parse' –

回答

1

那麼,如果你絕對必須使用無效的格式,你必須寫你自己的函數來做到這一點。當然,我們不建議這樣做,並且應該改進JS代碼來解析返回的JSON字符串,而不是強制PHP輸出無效的輸出。

這裏有一個簡單的函數,應該實現你在找什麼(至少在給定的例子陣列 - 你將需要修改它,如果你正在使用一個多維數組工作):

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是否能夠完成我所描述的內容。 –