2010-06-13 94 views
3

這種類型的數組的名稱是什麼?這是什麼類型的對象以及如何使用它?

有3個主要部分和4個由「issuedTime」「text」「url」和「validToTime」組成的子部分,您如何開始將其轉換爲對象?如果只有1個主要部分,然而對於3個主要部分來說做起來相當簡單,並且對於每個主要部分沒有識別讓我撓頭從哪裏開始。

任何意見讚賞。

[{ 
"issuedTime":"7:13pm Sunday 13 June 2010", 
"text":"\nAmended 7:10pm.\n\nText text and more text\n", 
"url":"\/folder\/fc\/name.png", 
"validToTime":"12:00am Monday 14 June 2010" 
},{ 
"issuedTime":"8:33pm Sunday 13 June 2010", 
"text":"\nText and more text.\n", 
"url":"\/folder\/fc\/name.png", 
"validToTime":"12:00pm Monday 14 June 2010" 
},{ 
"issuedTime":"10:40am Sunday 13 June 2010", 
"text":"\nAnd even more text.", 
"url":"\/folder\/fc\/name.png", 
"validToTime":"12:00am Tuesday 15 June 2010" 
} 
] 

回答

2

下面是如何解析JSON

<?php 
$json = '[{ 
    "issuedTime":"7:13pm Sunday 13 June 2010", 
    "text":"\nAmended 7:10pm.\n\nText text and more text\n", 
    "url":"\/folder\/fc\/name.png", 
    "validToTime":"12:00am Monday 14 June 2010" 
    },{ 
    "issuedTime":"8:33pm Sunday 13 June 2010", 
    "text":"\nText and more text.\n", 
    "url":"\/folder\/fc\/name.png", 
    "validToTime":"12:00pm Monday 14 June 2010" 
    },{ 
    "issuedTime":"10:40am Sunday 13 June 2010", 
    "text":"\nAnd even more text.", 
    "url":"\/folder\/fc\/name.png", 
    "validToTime":"12:00am Tuesday 15 June 2010" 
}]'; 
// Parse the json into a PHP array that holds multiple "stdClass Object"s 
$obj = json_decode($json); 
// Iterate through each "stdClass Object" and show what it contains 
foreach($obj as $var => $value) 
{ 
    echo "Number: $var <br/>";  
    echo "Issued: " . $obj[$var]->issuedTime . "<br/>";      
    echo "Text: " . $obj[$var]->text . "<br/>";  
    echo "URL: " . $obj[$var]->url . "<br/>";  
    echo "Valid to: " . $obj[$var]->validToTime . "<br/>";  
    echo "<br/>"; 
} 
?> 

一旦你有$ OBJ,您可以訪問它像在foreach循環以上,或訪問,讓我們說,在第二個上市的文本可以使用:

echo $obj[1]->text; // Second listing, since the first listing is $obj[0] 

和HTML鏈接W文字的一樣:

echo '<a href="' . $obj[1]->url . '">' . $obj[1]->text . '</a>'; 
+0

我將與此並行看看它產生了什麼結果,如果我可以給每個部分一個標識符,例如[0],[1],[2](3個部分),那麼我可以使用簡單的echo $ out - > [0] text;或者echo $ out - > [2] url;那可以工作嗎? – Gary 2010-06-13 16:45:22

+0

每個部分都有一個標識符... $ var。這是你解碼json時自動爲你做的。在你的例子中(上面的代碼)$ var從0到2.它像你所說的訪問,$ obj [$ var] - > text ... echo $ obj [1] - > text;等等......我不確定我是否完全理解你的評論...... – 2010-06-13 18:43:36

+0

@彼得,對不起,花了這麼長的時間來回應,我需要做的是抓住每個部分的每個標題,以便我可以輸出到一個網頁表,如果它只有1個部分而不是3個,它會很容易做到,但不確定如何讓腳本抓住第一部分的URL並將其放在頁面上,然後從第2部分抓取URL並輸出換句話說,對於3個「發佈時間」和3個文本等具有單獨的身份。 – Gary 2010-06-15 07:04:20

10

JSON (an acronym for JavaScript Object Notation)是一個輕量級基於文本的 開放標準設計用於 人類可讀的數據交換。它是從 編程語言派生的 ,用於表示 簡單數據結構和關聯 數組,稱爲對象。儘管它與JavaScript的關係爲 ,但它與語言無關是 ,幾乎每個 編程語言都可以使用解析器 。

您可以輕鬆地將其轉換成PHP數組與json_decode功能,這裏是PHP網站的例子:

$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}'; 
var_dump(json_decode($json, true)); 

結果:

array(5) { 
    ["a"] => int(1) 
    ["b"] => int(2) 
    ["c"] => int(3) 
    ["d"] => int(4) 
    ["e"] => int(5) 
} 

的第二個參數json_decode是否應將其轉換爲關聯數組。如果不指定第二個參數,輸出將是這樣的:

object(stdClass)#1 (5) { 
    ["a"] => int(1) 
    ["b"] => int(2) 
    ["c"] => int(3) 
    ["d"] => int(4) 
    ["e"] => int(5) 
} 

所以,你可以將其轉換爲數組和循環通過它想:

$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}'; 
$array = json_decode($json, true); 
print_r($array); 

foreach($array as $key => $value) 
{ 
    // manipulate the var $value 
} 
+0

好的,是已經嘗試了幾個json解碼腳本,但最終與gobertygook輸出和錯誤或不完全解碼爲可行的文本。 – Gary 2010-06-13 09:56:18

+0

@Gary:你應該在這裏發佈你的企圖/代碼或其他問題,以便我們能夠回答那裏出了什麼問題。 – Sarfraz 2010-06-13 10:00:34

+0

對不起,它不是解碼,而是利用每個部分的每個部分,如果我去echo $ out-> text;例如,它不區分這些部分。 對不起,我只是一個初學者。 – Gary 2010-06-13 10:08:04

相關問題