2009-12-21 2 views
0

배열을 가져 와서 더 큰 배열에 여러 번 삽입하여 더 작은 배열의 값이 더 큰 값을 채울 수 있는지 알고 싶습니다. 정렬.PHP - 큰 배열을 통해 배열 값을 추출하는 중

array1에는 값 ([0 => 'a'], [1 => 'b'], [2 => 'c'])이 있고 array2에는 8 개의 값을 저장할 수 있습니다. 그래서 array2의 공간이 부족할 때까지 array1의 값을 받아 array2에 계속 삽입하면 array2는 'a', 'b', 'c', 'a', 'b'등의 값을 가질 수 있습니다. '택시'? 사전에

감사합니다, ~ 후세인은 ~

답변

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); 

또는

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

첫번째가되도록 배열을 채운다 최소한 입니다. 원하는 수만큼 요소를 잘라내어 나머지 부분을 잘라냅니다. 두 번째는 원래의 배열 크기를 기준으로 원하는 수의 요소를 배열로 채우고 나머지는 더합니다. 여기

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; 
관련 문제