php - 从特定键迭代 PHP 数组

标签 php arrays iterator

我知道如何在 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/

相关文章:

java - 有没有一种简单的方法可以将对象数组替换为 ArrayList?

css - 在 Sass 中动态生成类名和 CSS 属性

javascript - 使用 ajax 将数据发布到 PHP 文件

php - 调用变量 php/mysql

php - 从PHP中的变量返回第一句话

php - 从 MySQL 数据中删除/隐藏添加的反斜杠

Python 检查数组的 dtype - float 或 complex

javascript - 使用数组查找文本并替换为类等于文本的文本周围的链接

c++ - &*vector::end() 是未定义的行为吗?

java - java的iterator.remove()如何翻译成python?