Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP I通过更大的数组复制数组值_Php_Arrays_Insert_Loops - Fatal编程技术网

PHP I通过更大的数组复制数组值

PHP I通过更大的数组复制数组值,php,arrays,insert,loops,Php,Arrays,Insert,Loops,我想知道是否有可能将一个数组多次插入一个更大的数组,使较小数组的值填满较大的数组 假设array1有值[0=>'a']、[1=>'b']、[2=>'c'],array2可以容纳8个值。那么,我如何获取array1的值并将它们连续插入array2,直到array2耗尽空间,这样array2将具有值'a'、'b'、'c'、'a'、'b'、'c'、'a'、'b' 提前感谢,, ~Hussain~基本上,您希望在小数组上循环,将每个元素添加到新数组中,直到达到所需的大小 考虑这一点: $max = 8;

我想知道是否有可能将一个数组多次插入一个更大的数组,使较小数组的值填满较大的数组

假设array1有值[0=>'a']、[1=>'b']、[2=>'c'],array2可以容纳8个值。那么,我如何获取array1的值并将它们连续插入array2,直到array2耗尽空间,这样array2将具有值'a'、'b'、'c'、'a'、'b'、'c'、'a'、'b'

提前感谢,,
~Hussain~

基本上,您希望在小数组上循环,将每个元素添加到新数组中,直到达到所需的大小

考虑这一点:

$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;
    }
}

假设输入数组按顺序编制索引:

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


第一个填充数组,使其至少具有所需数量的元素,并截断其余元素。第二个将填充一个数组,将所需的元素数乘以原始数组大小,并将其余元素相加。

下面是一个使用输入数组的内部指针,以保持概念上的简单:

$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;
$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];
$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;