我尝试解码两个不同的json feed网址并合并为一个oject / output。我尝试了以下,然而,并没有真正的运气。
feed source 1: http://sourcesample.com/feed/posts
data: [
{
name: "Me",
url: "http://example.com/sample",
title: "Sample Title",
}
]
feed source 2: http://differentsource.com/feed/details
data: [
{
likes: "200",
shares: "300",
total: "1000",
}
]
$sources =array("http://sourcesample.com/feed/posts", "http://differentsource.com/feed/details");
$requests = file_get_contents($sources[0],$sources[1]);
$response = json_decode($requests);
foreach($response->data as $item){
echo'<li>'.$item->name.'</li><li>'.$item->shares.'</li>'
打印名称有效,但在尝试打印第二个对象Feed时,没有任何内容。有任何想法吗?
答案 0 :(得分:2)
file_get_contents()
一次不会返回多个网址的内容。对于true
参数,第二个参数大致被视为use_include_path
。为了您的目的,这是无关紧要的。
无论如何,只读取第一个Feed。它不包括“份额”数据。
即使都读取,结果也是:
'data: [
{
name: "Me",
url: "http://example.com/sample",
title: "Sample Title",
}
]
data: [
{
likes: "200",
shares: "300",
total: "1000",
}
]'
这不是一个有效的JSON字符串 - 它是彼此相邻的两个对象,没有合并。
如果您确信两个Feed的大小相同,则可以同时读取它们(单独),然后立即循环播放它们:
$names = json_decode( file_get_contents( $sources[0] ) );
$stats = json_decode( file_get_contents( $sources[1] ) );
for ( $i = 0; $i < count( $names->data ); ++$i )
{
$name = $names->data[$i];
$stat = $stats->data[$i];
echo '<li>' . htmlspecialchars($name->name) . '</li><li>' .
htmlspecialchars($stat->shares) . '</li>';
}