【问题标题】:PHP: Get next value of an array until the foreach loop ends [duplicate]PHP:获取数组的下一个值,直到foreach循环结束[重复]
【发布时间】:2013-05-29 12:40:44
【问题描述】:

我试图在 foreach 循环中获取 $current_account,直到 fooreach 循环结束。我正在使用 next 函数,它为我提供数组中的下一个元素,直到它到达末尾。到达数组末尾后,如何使其转到数组中的第一个元素?

$search_tags = array(
    "happy",
    "summer",
    "beach",
    "glasses",
    "umbrella",
    "funny",
    "people",
    "music",
    "rap"
);

$accounts = array(
    "account A",
    "account B",
    "account C"
);

foreach ($search_tags as $tag) {
    $current_account = current($accounts);
    print_r($current_account."\n");

};

所以在这种情况下,结果应该是这样的:

帐户 B 账户 C 账户 A 账户 B 账户 C 账户 A 账户 B 账户 C 帐户 A

但我得到以下信息:

帐户 B 帐号 C

【问题讨论】:

  • 到达终点需要重置$accounts

标签: php arrays loops foreach next


【解决方案1】:

使用InfiniteIterator

$accounts = new InfiniteIterator(new ArrayIterator($accounts));
$accounts->rewind();

foreach($search_tags as $tag) {
    echo ucfirst($accounts->current()), PHP_EOL;
    $accounts->next();
}

See Live Demo

【讨论】:

  • 甜蜜的解决方案 - 现在我找到了 InfiniteIterator 的一个很好的用途
  • @DaniilVnoutchkov 这就是您在问题中所要求的。
  • 辩解:您最初的问题表明它应该从帐户 B 开始
  • 为什么它从“AccountB”而不是“AccountA”开始?我不明白为什么会这样。
  • 是的,很抱歉,我编辑了我的问题。我想从数组的第一个值开始,然后转到下一个。
【解决方案2】:

还有其他简单的方法可以做到这一点,例如根据当前索引通过索引访问帐户元素,如下所示;

foreach ($search_tags as $index => $tags) {
    print_r($accounts[$index % count($accounts)] . "\n");
}

哪些输出;

account A
account B
account C
account A
account B
account C
account A
account B
account C

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-27
    • 2019-04-29
    • 1970-01-01
    • 2015-09-18
    • 2012-06-15
    • 1970-01-01
    • 2021-08-25
    相关资源
    最近更新 更多