首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHP使数组从键/位置开始

PHP使数组从键/位置开始
EN

Stack Overflow用户
提问于 2012-12-10 23:28:47
回答 2查看 814关注 0票数 1

我想告诉我的数组从键位置2开始,然后遍历整个数组,包括键位置2之前的值。我只想使用一个数组并指定我开始循环的键位置。例如,这里我使用的是array_splice,但它不能实现我想要的功能,您能帮我吗?

代码语言:javascript
运行
复制
$names = array('Bill', 'Ben', 'Bert', 'Ernie');
foreach(array_slice($names, 2) as $name){
   echo $name;
}

foreach(array_slice($names, 3) as $name){
   echo $name;
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-12-10 23:30:49

如果键不相关,则可以将数组拼接两次,然后合并生成的数组,如下所示:

代码语言:javascript
运行
复制
$names = array('Bill', 'Ben', 'Bert', 'Ernie');
$start = 2;

foreach( array_merge( array_slice($names, $start), array_slice( $names, 0, $start)) as $name){
   echo $name;
}

您可以从the demo中看到以下内容:

代码语言:javascript
运行
复制
BertErnieBillBen

或者,为了提高效率,您可以使用两个循环,这两个循环可以知道回绕到开头,这将更有效,因为您是在原始数组上操作,而不是创建它的副本。

代码语言:javascript
运行
复制
$start = 2;
for( $i = $start, $count = count( $names); $i < $count; $i++) {
    echo $names[$i];
}
$i = 0;
while( $i < $start) { 
    echo $names[$i++];
}

您还可以将其转换为一个单循环,并只封装用于在for中包装的逻辑。

票数 3
EN

Stack Overflow用户

发布于 2012-12-10 23:43:14

代码语言:javascript
运行
复制
$limit = 2; //so you can set your start index to an arbitrary number
$fn= function($a,$b) use ($limit){
  if(($a < $limit && $b < $limit) 
      || ($a >= $limit && $b >=$limit)) //$a and $b on the same side of $limit
        return $a < $b ? -1 : ($a==$b ? 0 : 1);
  if($a < $limit && $b > $limit) return 1; //because $a will always be considered greater
  if($a >= $limit && $b < $limit) return -1; //because $b will always be considered greater

};
uksort($arr, $fn);
foreach($arr as $v) echo $v;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13803929

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档