2014-04-02 89 views
0

我想在PHP中構建一些JSON。我是PHP新手,對此知之甚少。目前,我有以下幾點:在PHP中格式化JSON

$json = '{"content":{"person":{"name":"$name", "email":"$email"}, "title":"$subject", "description": { "body": "$details" }}}'; 

$name$email$subject$details是先前已定義的所有變量。如果我使用上面的代碼打印出$ JSON,我得到如下:

{"content":{"person":{"name":"$name", "email":"$email"}, "title":"$subject", "description": { "body": "$details" }}}' 

換句話說,我的變量並沒有取代佔位符的字符串中。我如何使用變量作爲關鍵值來構建一些JSON?

謝謝!

+5

建立一個包含你想要的數據和結構數組。然後使用json_encode()將其轉換爲JSON。 –

+1

未來:[PHP字符串](http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.single) – AbraCadaver

回答

1

在PHP中,雙引號和單引號做不同事情;如果使用雙引號,則只能在字符串內使用變量:

$test = 'world'; 
echo 'Hello $test!'; // Prints: Hello $test! 
echo "Hello $test!"; // Prints: Hello world! 

如果使用雙引號包圍你的JSON字符串,你需要逃避你的所有,裏面的雙引號:

$json = "{\"content\":{\"person\":{\"name\":\"$name\", \"email\":\"$email\"}, \"title\":\"$subject\", \"description\": { \"body\": \"$details\" }}}"; 

替代方法

注意:您是否熟悉PHP數組? PHP具有將數組到JSON字符串函數json_encode - 這樣做可能使你的代碼更容易(特別是如果你的JSON字符串是會得到更大的任何一點/更復雜)

$json = json_encode(array 
(
    "content" => array 
    (
     "person"  => array 
     (
      "name" => $name, 
      "email" => $email 
     ), 
     "title"  => $subject, 
     "description" => array 
     (
      "body" => $details 
     ) 
    ) 
)); 

兩個方案都應該給$json值你所期望

希望這有助於:) X

1
$content = json_encode(array(
'content' => array(
    'person' => array(
     'name' => $name, 
     'email' => $email, 
     'title' => $subject, 
     'description' => array(
      'body' => $details 
      ) 
     ) 
    ) 
); 
echo $content; 
0

的文檔始終是非常有幫助的,檢查出字符串的,這裏將解釋如何您可以和不能使用單引號或雙引號變量字符串。

Documentation on Strings

更簡單的解決方案是使用一個數組,json_encode它會輸出什麼,你在你的問題有哪些:

<?php 
$array = array(
    'content' => array(
     'person' => array(
      'name' => $name, 
      'email' => $email, 
     ), 
     'title' => $subject, 
     'description' => array(
      'body' => $details, 
     ), 
    ), 
); 

$json = json_encode($array);