首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果为负,则返回php数组算术循环开始

如果为负,则返回php数组算术循环开始
EN

Stack Overflow用户
提问于 2017-05-22 01:24:20
回答 2查看 71关注 0票数 0

如果我有以下数组:

代码语言:javascript
复制
$myArray = [1 => 'a', '2' => 'b', 3 => 'c'];

我的起始值是2;

我想说2-1=1,所以给我这个数组的值a,但是如果2-2=3,那么就给我值c。

也就是说,算术应该限定在我的数组中的元素数量,并且任何超出数组索引的值都会返回到数组的开始或结束?

EN

回答 2

Stack Overflow用户

发布于 2017-05-22 01:37:44

编写一个函数来为您搜索正确的密钥。

例如,如果您的数组没有任何遗漏的键:

代码语言:javascript
复制
<?php

function searchArray(array $array, int $key)
{
    if (isset($array[$key])) {
        return $array[$key];
    }
    $key = count($array) + ($key % count($array));
    return $array[$key];
}

$myArray = [1 => 'a', '2' => 'b', 3 => 'c'];

var_dump(searchArray($myArray, 2 - 1)); // prints string(1) "a"
var_dump(searchArray($myArray, 2 - 2)); // prints string(1) "c"
var_dump(searchArray($myArray, 2 - 3)); // prints string(1) "b"
票数 0
EN

Stack Overflow用户

发布于 2017-05-22 04:13:36

这是双向的,向前向后

代码语言:javascript
复制
function test($array, $key) {
   if(is_array($array) && !empty($array)) {
     if($key>count($array)) $key=$key%count($array);
     if($key<1) $key=count($array)+$key%count($array);
     return $array[$key];
   }
}

$myArray = [1 => 'a', '2' => 'b', 3 => 'c'];

var_dump(test($myArray, -1)); // b
var_dump(test($myArray,2-2)); // c
var_dump(test($myArray,  1)); // a
var_dump(test($myArray,  6)); // c
var_dump(test($myArray, -62));// a
var_dump(test($myArray,  99));// c
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44099743

复制
相关文章

相似问题

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