簡體   English   中英

PHP - 如果我只能在一次調用中獲取100個項目,是否有一種循環遍歷JSON文件中所有元素的方法?

[英]PHP - Is there a way of looping through all elements in a JSON file if I could only fetch 100 items at one call?

我需要顯示JSON文件的所有元素/對象。 我目前只能調用一個接受偏移(起始索引)和限制的端點。 在一次調用時,您可以獲得的最大元素數為100(限制)。 我想知道如何獲取JSON文件的所有元素並將它們存儲在數組中,而不知道JSON文件中有多少元素。

最初我試圖將前500個元素保存在數組中。 問題在於該數組的輸出大小為5而不是500,因為getElements端點返回100個元素的列表,因此實際存儲的數組在每個索引處是100個元素。 因此,例如json_array [0]包含前100個元素,json_array [2]包含接下來的100個元素等。

$offset = 0;
$limit = 100;
$json_array = array();

while($offset < 500)
{
array_push($json_array,getElements($token,"api/Elements?offset=".$offset."&limit=".$limit));
$offset+=100;
}

echo count($json_array)

我期待找到一種循環遍歷整個json文件的方法,而不知道該文件具有的元素數量。 我最終的期望是找到一種方法來顯示所有這些元素的數量。 謝謝!

我使用類似的API - 有一個per_page選項和一個page選項。

幸運的是,如果結果少於per_page值,那么我正在設置的API被設置為返回所有內容而沒有錯誤,因此我所做的只是在我獲取100條記錄時循環。

就像是:

$fetched=100;
$page=0;
$per_page=100;
$total_result=array();
while($fetched==100){

  $res=json_decode(file_get_contents($API_URL."?offset=".($page*$per_page));

  $fetched=count($res);

  // add res to big result set
  for($i=0;$i<$fetched;$i++){
     $total_result[]=$res[$i];
  }

  $page++;   
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM