2010-06-13 60 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

相关问题