0
如果我有以下的數組:PHP數組運算循環回到開始,如果負
$myArray = [1 => 'a', '2' => 'b', 3 => 'c'];
,我有2的起始值;
我想說2 - 1 = 1所以給我一個值從這個數組 但如果2 - 2 = 3所以給我價值c。
也就是說,算術應該以數組內的元素數爲界,超出數組索引的任何值都會返回到數組的開始或結束位置?
如果我有以下的數組:PHP數組運算循環回到開始,如果負
$myArray = [1 => 'a', '2' => 'b', 3 => 'c'];
,我有2的起始值;
我想說2 - 1 = 1所以給我一個值從這個數組 但如果2 - 2 = 3所以給我價值c。
也就是說,算術應該以數組內的元素數爲界,超出數組索引的任何值都會返回到數組的開始或結束位置?
編寫一個函數爲您搜索正確的密鑰。
例如,如果你的數組沒有任何遺漏鍵:
<?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"
這兩種方式都可以,前鋒和向後。
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
閱讀有關[模運算符(http://www.php.net/manual/en/language.operators.arithmetic.php)在PHP –
$ myArray的[計數($ myarray的)-1] ;有幫助。我很困惑... 2 - 2 == 3怎麼樣? – admcfajn