我有以下脚本从API获取搜索结果,然后切片该数组并将其转储,我在将JSON解码为数组时遇到问题,它返回Array(0) { } 这是一个wordpress简码
Array(0) { }
这是从api获得的Json示例:
[ { "barcode": "000015426950", "name": "Karen's cowboy", "author": "Ann", "author_last": "Martin", "publisher": "New York : Scholastic, c2000.", "year_pub": "", "edition": "", "genre": "", "checkout": "out", "series": "", "callnum": "MAR", "fiction": "true", "in_house": "false", "timestamp": "1355835387", "outto": "000008388615", "duedate": "1372005722", "ISBN": "059052528X", "media_type": "", "print": "false", "BOXID": "2147483647", "uid": "10", "printed": "" }, { "barcode": "000015426949", "name": "Karen's yo-yo", "author": "Ann M", "author_last": "Martin", "publisher": "New York : Scholastic, c2000.", "year_pub": "", "edition": "", "genre": "", "checkout": "out", "series": "", "callnum": "MAR", "fiction": "true", "in_house": "false", "timestamp": "1355835343", "outto": "000008388615", "duedate": "1373216918", "ISBN": "0590525115", "media_type": "", "print": "false", "BOXID": "", "uid": "10", "printed": "" }, ... } ]
以下是用于获取JSON和对其进行分页的代码:
function book_search_form() { ?> <form method='get'><input type='text' name='searchvalue' value='<? if (isset($_GET['searchvalue'])) echo $_GET['searchvalue'];?>' /> <input type='submit' value='Search' /><input type='hidden' name='pagenum' value='1' /></form> <br> <?php if(isset($_GET['pagenum']) && isset($_GET['searchvalue'])) { $page=$_GET['pagenum']; $searchvalue = $_GET['searchvalue']; // get the value of the page from your url $recordsPerPage=10; // number of records you want on your page $api_url = get_option('api_url'); $api_key = get_option('api_key'); $data = file_get_contents("$api_url/book/index.php/name/$searchvalue?key=2513619352"); $array = (array)json_decode($data); $index=($page*$recordsPerPage)-1; $recordsToBeDisplayed = array_slice($array,$index,$recordsPerPage);// this array contains all the records you would want to display on a page; $total_pages=ceil(count($array)/$recordsPerPage); } else { //use default values } ?> <html>...<body><div id="records"> <? echo '<pre>'; echo $recordsToBeDisplayed; echo '</pre>';?><!-- use the array created above to display records --> </div> <div id="pagination"> <? for($j=1;$j<=$total_pages;$j++){ if($j==$page) {?> <li style="display: inline;"><a href="?searchvalue=&pagenum=<?=$j?>"><u><?=$j?></u></a></li> <?}else{?> <li style="display: inline;"><a href="?searchvalue=&pagenum=<?=$j?>"><?=$j?></a></li> <?}}?> </div> <?php }
试试json_decode
$array = json_decode($data, true);
然后,您将获得一个数组而不是一个对象。
Example#1 json_decode()示例
<?php $json = '{"a":1,"b":2,"c":3,"d":4,"e":5}'; var_dump(json_decode($json)); var_dump(json_decode($json, true)); ?>
上面的示例将输出:
object(stdClass)#1 (5) { ["a"] => int(1) ["b"] => int(2) ["c"] => int(3) ["d"] => int(4) ["e"] => int(5) } array(5) { ["a"] => int(1) ["b"] => int(2) ["c"] => int(3) ["d"] => int(4) ["e"] => int(5) }