簡體   English   中英

如何使用 PHP 在沒有 `foreach` 和 `for` 的情況下手動迭代數組/對象

[英]How to manually iterate over array/object without `foreach` and without `for` with PHP

有這個庫https://github.com/halaxa/json-machine (PHP),它允許我讀取巨大的 JSON 文件而無需將整個文件加載到內存中。 它工作得很好,我讀取 JSON 的方式是這樣的:

$temp = \JsonMachine\JsonMachine::fromFile("teste.json");

foreach ($temp as $key => $value) {

    echo $value;

}

問題是我不能使用foreach ,我只需要根據需要讀取 JSON 。 例如,每次我需要從數組中檢索一個元素時,我都嘗試了下面的代碼:

echo next($temp);

但是它返回和空字符串。 如果我使用var_dump(current($temp))它返回這個:

object(JsonMachine\StreamBytes)#2 (1) { ["stream":"JsonMachine\StreamBytes":private]=> resource(10) of type (stream) }

使用foreach循環效果很好,但我不能使用它,我需要根據需要檢索元素。 我怎樣才能做到這一點?

這個類已經提供了一個生成器,你應該能夠做這樣的事情:

$temp = \JsonMachine\JsonMachine::fromFile("teste.json");
$iterator = $temp->getIterator();
$firstItem = $iterator->current();
$iterator->next();
$secondItem = $iterator->current();
$iterator->next();
$thirdItem = $iterator->current();

[編輯] 看起來像JsonMachine::getIterator()返回一個鏈式生成器,所以只需將第二行更改為:

$iterator = $temp->getIterator()->getIterator();

暫無
暫無

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

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