2016-04-28 12 views
3

私は「それらの人」の1人であることは嫌いです - 私はその答えが私の顔の前で正しいと確信しています。しかし、私は友人のMr.Goの助けを借りてこれを理解するために、最後の数時間を試みました。私がやろうとしています何基本的なPHP配列の繰り返しの問題

は非常に簡単です:

  1. プッシュ配列に文字列。
  2. 配列Xのエントリをオフセットで数え、結果の値を変数として返します。私のすべての労働者のために

は、私が持っているだけで、この:

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

私は例えば(可変数によって数3、増分で始まる(例えば)カウントできるようにしたいと思います、12)をラウンドロビン方式で実行します。これにより、数値が5になります。その数値(5)を変数に格納して、残りのページで使用したいと思います。

もう一度、私はこれが基本的であるべきだと知っていますが、何らかの理由で私はそれを理解できないようです。ご助力ありがとうございます。

+1

イテレータを試すhttp://php.net/manual/pl/class.iterator.php –

+2

お試しコードはどこですか? – Thamilan

+2

あなたは意図された動作を詳しく教えていただけますか?私には、繰り返しが何を達成すべきかははっきりしていません。 – k0pernikus

答えて

2

ここでは、道の一つである:最初の位置に所望の要素の位置を変更する

  1. 最後に、あなたは、アレイ内を循環した後に望む要素を選択します。

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 

出力:

+0

残念ながら私はこのコードを実行することができません。 :( –

+0

私はそれが今働いていると信じています...私は二重チェックをいくつか与えてください、そして、それが正しいと判明した場合、私はあなたの答えとして印を付けるでしょう。 –

+1

あなたは男の中の神です - また、新しい勉強資料! –

0

番号1の場合は、array_push():http://php.net/manual/en/function.array-push.phpを使用します。

for($i = 0; $i< $stack.count(); $i++){ 
    $tmp = $stack[$i]; 
    //tmp will be the value at that location do what you will with it 
} 

<?php 
$stack = array("orange", "banana"); 
array_push($stack, "apple", "raspberry"); 
print_r($stack); 
?> 

これは、あなたがこのようにループのための単純なを使用することができ、あなたの数2の

Array 
(
[0] => orange 
[1] => banana 
[2] => apple 
[3] => raspberry 
) 

が表示されます。ここでは

は一例ですオフセット、あなたのオフセットに$ 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 
} 
+0

申し訳ありませんが、私がこのようなループから返すことを期待していた値は、配列のカウントが終了する数値であり、配列のすべての値ではありません。 例として、私はPHPで配列を持つmeny miny moを再生し、最後の反復の値をキャッチします。上記の例では、PHPがフルーツ配列の値を5回、オフセット1で数えたいと思います。だから、バナナから始まり、配列を5で数えればリンゴになります。私は、コードが "リンゴ"を変数として保存して、残りのページに使用できるようにしたいと思います。 –

+0

@ジョンドーこれらの番号1と5は変わるのですか?もしそうなら、どのように? – nerdlyist

+0

彼らは変わる。 1はオフセットであり、1人当たりで計算され、年齢を表す5の数字と同様に、人が生まれた曜日に基づいて変化する。 –

0

1)array_pushで行うことができる配列に文字列を押します。

2)配列のX個のエントリをオフセットで数え、その結果の値を変数として返すことは少し複雑です。 count()を使用して1を加えて配列の要素数を取得し、PHPモジュラス演算子を使って序数のキーオフセットを計算します%arrayが序数でキーされていない場合、array_value()は配列ordinal私たちの価値。それから、値を返します。

下記のコードはすべてまとめています。

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