2017-10-14 1 views
-1

두 개의 교대하는 숫자를 추가하여 숫자 배열을 만들어야하고 어떻게해야하는지 잘 모르겠습니다.두 개의 교대하는 숫자를 추가하여 숫자 배열 만들기

배열에 총 200 개의 항목이있을 때까지 4와 8을 번갈아 추가해야합니다. 시작 번호는 포함하지 않아야합니다. 따라서 배열 같아야

[4, 12, 16, 24, 28, 36, 40, 48 ...]

PHP의 것을 수행하는 최선의 방법은 무엇인가? 이것은 단지 하나의 방법입니다

이 할 수있는 몇 가지 방법이 있습니다

+0

* "가장 좋은 방법"*은 주관적입니다. 거기에 몇 가지 추가가있는'for()'루프가있는 방법이 많이 있습니다. 나는 무언가를 시도하고 그것이 효과가 있는지 볼 것입니다. – Rasclatt

답변

0

...

<?php   
$sequence_array = array(); 
$sequence_array[0] = 4;  // Seed the initial entry 
for ($i = 1; $i < 200; $i++) { 
    $step = ($i % 2) ? 8 : 4; // Decide whether to add a 4 or an 8 
    $sequence_array[$i] = $sequence_array[$i - 1] + $step; 
} 
var_dump($sequence_array); // Lets peek at the result 

그래서 기본적으로 시작 번호 4.

와 1 항목을 씨앗 홀수/짝수 종류의 인덱스와 같은 인덱스에서 모듈 2를 수행하면 "변경"효과가 나타납니다.

$ 단계는 "홀수/짝수"위치를 기준으로 4 또는 8로 계산됩니다.

이 기능을 더 많이 만들 수 있으며, 번갈아 사용하는 숫자에 대해 변수를 설정/사용할 수 있습니다. 그러나 나는 당신이 :) 필요한 경우에 떠날거야

...

그래서 당신은 같은 함수를 정의 할 수 있습니다 ... 나는 그것을하자 수 없었다 좋아

function build_alternating_array($first_value, $second_value, $total_entry_count) { 
    $array = array(); 
    $array[0] = $first_value; // Seed the initial value 
    for ($i = 1; $i < $total_entry_count; $i++) { 
     $step = ($i % 2) ? $second_value : $first_value; 
     $array[$i] = $array[$i - 1] + $step; 
    } 

    return $array; 
} 

그리고 다음과 같이 호출 ...

$sequence_array = build_alternating_array(4, 8, 200); 
var_dump($sequence_array); // Lets peek at the result 
0

단지 단순화 된 버전 :

$b = []; 
$d = 0; 
for($a =0; $a<=200; $a++) 
{ 
    $d += $a % 2 ? 8 : 4; 
    array_push($b , $d); 
} 

print_r($b); 
+0

그게 내가 생각해 낸 것보다 더 좋은 해결책입니다 :) – TimBrownlaw

관련 문제