0


0

PHP-ILより大きな配列を介して配列の値をループする

配列を取得し、配列の値を大きな配列に複数回挿入できるかどうかを知りたいので、小さな配列の値が大きな配列を埋めます。

array1には値([0 ⇒ 'a']、[1 ⇒ 'b']、[2 ⇒ 'c'])があり、array2には8つの値を保持できるとします。 だから、どのようにarray1の値を取り、array2がスペースを使い果たすまでarray2にそれらを連続的に挿入し、array2の値が「a」、「b」、「c」、「a」、「b」になるように、 'タクシー'?

よろしくお願いします、〜フサン〜

4 Answer


0


基本的に、小さな配列を繰り返しループして、各要素を目的のサイズに達するまで新しい配列に追加します。

このことを考慮:

$max = 8;

$Orig_Array = array('a', 'b', 'c');
$Next_Array = array();

while True
{
    foreach($Orig_Array as $v)
    {
       $Next_Array[] = $v;
       if(count($Next_Array) >= $max)
          break 2;
    }
}


0


入力配列に順番にインデックスが付けられていると仮定すると:

$len = count($input);
$output = array();
for ($i = 0; $i < MAX_SIZE; ++$i)
  $output[] = $input[$i % $len];


0


$a = array('a','b','c');
$desired = 8;

$b = array();
for($i=0;$i<($desired/count($a))+1;++$i) $b = array_merge($b,$a);
array_splice($b,$desired);

Or

$a = array('a','b','c');
$desired = 8;

$b = array();
for($i=0;$i<$desired/count($a);++$i) $b = array_merge($b,$a);
for($i=0;$i<($desired-count($b)-1);++$i) $b[] = $a[$i];

最初の配列は、少なくとも必要な数の要素を持つように配列を埋め、残りを切り捨てます。 2番目のものは、元の配列サイズを法として、要素の望ましい数まで配列を埋め、残りを合計します。


0


以下は、入力配列の内部ポインターを使用して、概念を単純にするためのものです。

$input = array(1, 2, 3);
$size = 32;

$output = array();
for ( $i = 0; $i < $size; $i++ ) {
  $curr = current($input);
  if ( $curr === false ) {
    reset($input);
    $curr = current($input);
  }
  $output[] = $curr;
  next($input);
}

print_r($output);die;