I am currently using PHP to make a chatbot that can do research on wiki,and send the introduction automaitcally, here is the wiki api json(https://zh.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exintro&explaintext&redirects=1&titles=search_title)
{"batchcomplete":"","query":{"redirects":[{"from":"search_title","to":"search_title"}],"pages":{"541":{"pageid":541,"ns":0,"title":"search_title","extract":"ablablablablablablablablablablabla。"}}}}
I want to get the extract part by
$data=$jsondata['query']['pages']["541"]['extract'];
but it seems like I need to have to know pageid is '541' first, is there method that I can know padeid in first??
You should look for a way to iterate over array values without knowing the keys. I'm not a PHP developer but I think a foreach will do:
foreach ($jsondata['query']['pages'] as $pageid => $pagedata) {
extract = $pagedata['extract']
...
}
There is also a formatversion=2
parameter for the query that, among other things, will make
action=query's "pages" be an array, instead of an object with page ids as keys that can be difficult to iterate.