2017-05-21 23 views
0

如果我有以下的數組:PHP數組運算循環回到開始,如果負

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

,我有2的起始值;

我想說2 - 1 = 1所以給我一個值從這個數組 但如果2 - 2 = 3所以給我價值c。

也就是說,算術應該以數組內的元素數爲界,超出數組索引的任何值都會返回到數組的開始或結束位置?

+1

閱讀有關[模運算符(http://www.php.net/manual/en/language.operators.arithmetic.php)在PHP –

+0

$ myArray的[計數($ myarray的)-1] ;有幫助。我很困惑... 2 - 2 == 3怎麼樣? – admcfajn

回答

0

編寫一個函數爲您搜索正確的密鑰。

例如,如果你的數組沒有任何遺漏鍵:

<?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

這兩種方式都可以,前鋒向後

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