我知道如何在 PHP 中迭代数组,但我想从特定键迭代数组。
假设我有一个巨大的数组
$my_array = array(
...
...
["adad"] => "value X",
["yy"] => "value Y",
["hkghgk"] => "value Z",
["pp"] => "value ZZ",
...
...
)
我知道从哪里开始迭代的键 ("yy")。现在我只想从这个键迭代到另一个键。
我知道我不想这样做:
$start_key = "yy";
foreach ($my_array as $key => $v)
{
if ($key == $start_key)
...
}
我一直在寻找 Iterator,但我认为这不是我需要的。
最佳答案
尝试组合 array_search、array_key 和 LimitIterator .使用 LimitIterator 页面中的示例和一些额外的位:
$fruitsArray = array(
'a' => 'apple',
'b' => 'banana',
'c' => 'cherry',
'd' => 'damson',
'e' => 'elderberry'
);
$startkey = array_search('d', array_keys($fruitsArray));
$fruits = new ArrayIterator($fruitsArray);
foreach (new LimitIterator($fruits, $startkey) as $fruit) {
var_dump($fruit);
}
从位置 'd' 开始,输出:
string(6) "damson" string(10) "elderberry"
这种方法有一个限制,它不会在数组周围循环,直到再次到达起始位置。它只会迭代到数组的末尾然后停止。您将不得不运行另一个 foreach
来完成数组的第一部分,但这可以使用我们已有的代码轻松完成。
foreach (new LimitIterator($fruits, 0, $startkey-1) as $fruit) {
var_dump($fruit);
}
这从第一个元素开始,直到我们搜索的元素之前的元素。
关于php - 从特定键迭代 PHP 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23675816/