我讨厌成为"那些家伙"中的一员 - 我非常确定答案就在我面前,我根本无法理解它。然而,在过去的几个小时里,我试图在我们的朋友谷歌先生的帮助下解决这个问题,但无济于事。
我想做的很简单:
- 将字符串推送到数组。
- 使用偏移量对数组中的条目进行 X 次计数,并将结果值作为变量返回。
对于我所有的劳动,我只有这个:
$newarray = array(1,2,3,4,7,5,8,6,9);
我希望能够从数字 3 开始计数(例如),以循环方式递增一个可变数字(例如 12)。这将使计数的末尾为数字 5。然后我想把这个数字(5)存储在一个变量中,以便在页面的其余部分使用。
同样,我知道这应该是基本的,但无论出于何种原因,我似乎都无法弄清楚。非常感谢您的帮助。
这是方法之一:
- 将所需元素的位置更改为第一个位置
- 最后,在数组中循环后选择您想要的元素。
PHP代码:
<?php
function circulateArr($key, $arr)
{
foreach($arr as $arrkey => $value)
{
if($arrkey != $key)
{
$elm = array_shift($arr);
array_push($arr, $elm);
}
else
{
break;
}
}
return $arr;
}
$array = array(1,2,3,4,5,6,7,8,9);
$start = 3;
$roundRobin = 12;
$arr = circulateArr(array_search($start, $array), $array); //Repositioning the array
echo $elementChose = $arr[($roundRobin%count($arr))-1]; //Get the array element
输出:
5
对于你的数字 1,你需要使用 array_push() : http://php.net/manual/en/function.array-push.php 。
下面是一个示例:
<?php
$stack = array("orange", "banana");
array_push($stack, "apple", "raspberry");
print_r($stack);
?>
这将显示
Array
(
[0] => orange
[1] => banana
[2] => apple
[3] => raspberry
)
对于你的数字 2。 您可以使用一个简单的 for 循环,如下所示:
for($i = 0; $i< $stack.count(); $i++){
$tmp = $stack[$i];
//tmp will be the value at that location do what you will with it
}
对于偏移量,只需将偏移量设置为偏移量$i
for($i = $offset; $i < $stack.count(); $i++){
$tmp = $stack[$i];
//tmp will be the value at that location do what you will with it
}
1)将字符串推送到数组可以用array_push来完成。
2)用偏移量计算数组中的条目X次,并将结果值作为变量返回有点复杂。 我们可以使用 count() 和加 1 来获取数组中的元素数量,并使用 PHP 模运算符 % 计算序数键偏移量 如果数组尚未使用序数值进行键控,array_value() 将为我们重新键入序数值的数组。然后我们只返回值。
下面是一小段代码,可以为您整合所有内容。
<?php
$myArray = array(1,2,3,4,7,5,8,6);
array_push($myArray,'9');
$start=3;
$increment=12;
echo roundRobbinArrayValue($myArray,$start+$increment)."'n";
function roundRobbinArrayValue($myArray,$pointer){
$ordinalArray=array_values($myArray);
$numberOfItems=count($ordinalArray)+1;
$newPointer= $pointer % $numberOfItems;
return $ordinalArray[$newPointer];
}
?>