我知道如何在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)
...
}
我一直在寻找迭代器,但我不认为这是我需要的。
7条答案
按热度按时间tmb3ates1#
尝试组合array_search、array_key和LimitIterator。使用LimitIterator页面中的示例和一些额外的位:
从位置“d”开始,输出:
这种方法有一个限制,它不会在数组中循环,直到再次返回开始位置。它只会迭代到数组的末尾,然后停止。你必须运行另一个
foreach
来完成数组的第一部分,但这可以通过我们已有的代码轻松完成。这从第一个元素开始,直到我们搜索的元素之前的元素。
bxgwgixi2#
foreach
总是重置数组的数组指针。你不能按照你想象的方式去做。你还有几种方法。foreach 的方法只是跳过所有内容,直到找到一次密钥:
你也可以使用数组指针并使用
while (list($key, $v) = each($array))
方法:或者,你可以像MarkBaker建议的那样提取你想要迭代的数组。
nr9pn0ug3#
可能类似于:
Demo
1qczuiv04#
可以使用array_keys和array_search。
就像这样:
qkf9rpyu5#
试试这样:
wgx48brx6#
如果this pull request通过了,你就可以很容易地做到这一点:
vh0rcniy7#
如果你创建一个数组,然后多次使用它,你可以索引数组键,这将比每次迭代所有元素更有效和干净。以这个类为例:
使用示例:
工作代码:
https://3v4l.org/EP0fL