2009-09-16 37 views

回答

10

最簡單的方法很可能會開始與你想對的關聯數組:

$data = array("myfirstvalue" => "myfirsttext", "mysecondvalue" => "mysecondtext"); 

然後使用foreach和一些字符串連接:

​​

或者如果您有最新版本的PHP,則可以使用json編碼函數內置內置 - 只要注意通過它們的數據以使其與預期格式相匹配即可。

+0

這樣工作像魅力一樣感謝你。 雖然如果我理解正確,我應該使用「json_encode」本來會更好的編碼? – Haluk 2009-09-16 20:13:21

+2

爲什麼不簡單地使用json_encode? – 2014-04-07 09:33:26

+0

@TimWachter這個答案來自2009年;注意最後一點關於「如果你有最新版本」;相當數量的主機仍然只運行PHP 4(並且在5.2中引入了「json_encode」)。 – Amber 2014-04-13 05:38:59

60

一旦你有你的PHP的數據,你可以使用json_encode功能;因爲PHP 5.2

它與PHP捆綁在你的情況下,你JSON字符串表示:

  • 含有2個元素
  • 每一個是一個對象,含有2個屬性/列表值

在PHP中,這會造成結構您代表:

$data = array(
    (object)array(
     'oV' => 'myfirstvalue', 
     'oT' => 'myfirsttext', 
    ), 
    (object)array(
     'oV' => 'mysecondvalue', 
     'oT' => 'mysecondtext', 
    ), 
); 
var_dump($data); 

var_dump讓你:

array 
    0 => 
    object(stdClass)[1] 
     public 'oV' => string 'myfirstvalue' (length=12) 
     public 'oT' => string 'myfirsttext' (length=11) 
    1 => 
    object(stdClass)[2] 
     public 'oV' => string 'mysecondvalue' (length=13) 
     public 'oT' => string 'mysecondtext' (length=12) 

而且,它編碼爲JSON:

$json = json_encode($data); 
echo $json; 

你得到:

[{"oV":"myfirstvalue","oT":"myfirsttext"},{"oV":"mysecondvalue","oT":"mysecondtext"}] 


BTW:Frolm我記得是什麼,我會說您的JSON字符串無效 - JSON數據:字符串周圍應該包含雙引號,包括對象的屬性名稱

查看http://www.json.org/的語法。


希望這有助於:-)

+2

你實際上並不需要轉換成數組對象。如果你有字符串鍵,json_encode會自動將它表示爲一個對象。 – 2009-09-16 20:04:40

+1

嗨, 我從上面的代碼得到的輸出實際上是不同的: array(2){[0] => object(stdClass)#1(2){[「oV」] => string(12) 「myfirstvalue」[「oT」] => string(11)「myfirsttext」} [1] => object(stdClass)#2(2){[「oV」] => string(13)「mysecondvalue」[「oT 「] => string(12)」mysecondtext「}} [{」oV「:」myfirstvalue「,」oT「:」myfirsttext「},{」oV「:」mysecondvalue「,」oT「:」mysecondtext「}] – Haluk 2009-09-16 20:18:27

+1

我從上面的代碼中刪除了var_dump,並修改了主要部分,如下所示。現在正常工作: $數據=陣列( 陣列( OV => 'myfirstvalue', OT => 'myfirsttext', ) 陣列( OV => 'mysecondvalue', OT => 'mysecondtext', ), ); – Haluk 2009-09-16 20:26:53

2

這是PHP代碼生成JSON格式

<?php 

    $catId = $_GET['catId']; 
    $catId = $_POST['catId']; 

    $conn = mysqli_connect("localhost","root","","DBName"); 
    if(!$conn) 
    { 
     trigger_error('Could not Connect' .mysqli_connect_error()); 
    } 

    $sql = "SELECT * FROM TableName"; 
    $result = mysqli_query($conn, $sql); 

    $array = array(); 

    while($row=mysqli_fetch_assoc($result)) 
    { 
     $array[] = $row; 
    } 

    echo'{"ProductsData":'.json_encode($array).'}'; //Here ProductsData is just a simple String u can write anything instead 
    mysqli_close('$conn'); 
?>