基本PHP数组迭代问题

时间:2016-04-28 12:39:15

标签: php arrays loops

我不想成为“那些家伙”之一 - 我非常确定答案是在我面前,我根本无法掌握它。然而,在过去的几个小时里,我已经尝试在我们的朋友谷歌先生的帮助下解决这个问题,但无济于事。

我想做的很简单:

  1. 将字符串推送到数组。
  2. 使用偏移量计算数组X中的条目次数,并将结果值作为变量返回。
  3. 对于我的所有劳动力,我都有这个:

    $newarray = array(1,2,3,4,7,5,8,6,9);
    

    我希望能够计算(例如)从数字3开始,以可变数字(例如,12)以循环方式递增。这会使计数的结尾为数字5.然后,我想取这个数字(5)并将其存储在一个变量中,以便在页面的其余部分使用。

    同样,我知道这应该是基本的,但无论出于何种原因,我似乎无法弄明白。非常感谢你的帮助。

3 个答案:

答案 0 :(得分:2)

以下是其中一种方式:

  1. 将所需元素的位置更改为第一个位置
  2. 最后,选择循环通过阵列后所需的元素。
  3. 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 :(得分:0)

对于您的号码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
}

答案 2 :(得分:0)

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];      
    }  
    ?>