如果我有以下数组:
$myArray = [1 => 'a', '2' => 'b', 3 => 'c'];我的起始值是2;
我想说2-1=1,所以给我这个数组的值a,但是如果2-2=3,那么就给我值c。
也就是说,算术应该限定在我的数组中的元素数量,并且任何超出数组索引的值都会返回到数组的开始或结束?
发布于 2017-05-22 01:37:44
编写一个函数来为您搜索正确的密钥。
例如,如果您的数组没有任何遗漏的键:
<?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"发布于 2017-05-22 04:13:36
这是双向的,向前,向后。
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));// chttps://stackoverflow.com/questions/44099743
复制相似问题