Google APIサーバーからJSONを受け取り、コンテンツを出力するこのJavascriptがあります(わかりやすくするためにコードが単純化されていることに注意してください):
function init() {
gapi.client.setApiKey('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');
gapi.client.load('blogger', 'v2', function() {
var request = gapi.client.blogger.posts.list({
'blogId': 'xxxxxxxxxxxxxxxxxxxxxxx',
'fields': 'items(content,title)'
});
request.execute(function(response) {
for (var i = 0; i < response.items.length; i++)
{
$(aDiv).append(response.items[i].title);
}
});
});
}
そして、本質的に同じことを行うこのPHPコードがあります:
$recentBlog = json_decode(file_get_contents("https://www.googleapis.com/blogger/v3/blogs/xxxxxxxxxxxxxxxxxxxxxx/posts?key=xxxxxxxxxxxxxxxxx"), true);
foreach ($recentBlog['items'] as $item)
{
echo $item[`title`];
}
問題は、各コードからの出力の順序が異なることです。Javascript は、上から下の順序でページに出力します2, 1, 0
。PHP は、上から下に、0, 1, 2
. 私が必要とするのは、「最新」のアイテムが一番上にあることです。そのため、上から下の順に両方が必要2, 1, 0
です。
まったく同じ応答が返されると思われる JSON データのさまざまな呼び出し方法を除けば、唯一の本当の違いは、一方がfor()
ループで、もう一方がforeach()
ループであることです。それがどのように違いを生むかわかりませんので、何か他に欠けているものがあるに違いありません。
原因が何であれ、私の現在の状況では、最新のものがページの上部に表示されるように、PHP が Javascript の順序に準拠する必要があります。または、言い換えれば、上から下へ、2, 1, 0
. どうすればそれを実現できますか?