2014-10-29 1 views
-2

분할은 4 개 지정된 부분으로 수는

$total = 5000; 

배열이 어떻게해야 배열의 4 개 부분으로 예를 들어 5000의 번호를 분할해야 같은 수의 togetter 이잖아

Array 
(
    [0] => 500 
    [1] => 100 
    [2] => 0 
    [3] => 0 
) 

이 내가 뭐가이지만, 베티이 있는지 메신저 : 사용자가 600 예를 들어 내가 이런 배열을 필요로 들어갑니다 r 방법. 내가 예를 들어 600을 입력하면 내가이 정의되지 않은 오프셋

$total_spidex = 5000; 

     $price_total = array(); 

     for($i=1; $i<=$total_spidex; $i++) 
     { 
      if($i <= 500) 
      { 
       $price_total[1][] = $i; 
      }  
      elseif($i >500 && $i <= 750) 
      { 
       $price_total[2][] = $i;   
      } 
      elseif($i >750 && $i <= 1000) 
      { 
       $price_total[3][] = $i;   
      } 
      elseif($i >1000) 
      { 
       $price_total[4][] = $i;   
      } 

     } 

     $sum = 0; 

     $sum = (count($price_total[1]) * 12) + (count($price_total[2]) * 11) + (count($price_total[3]) * 10) + (count($price_total[4]) * 9); 
+6

여기서 질문은 무엇입니까? – Dheerendra

+0

배열에서 두 번째 코드 블록과 같이 얻는 방법 – Julez

+0

첫 번째 문장에서 4 부분으로 나누고 두 번째 예제에서는 두 부분으로 나눕니다. 이것은 매우 모호합니다. – Dheerendra

답변

1
$number = 5000;    // initial number 
$limit = 1000;    // limit for chunks 

$parts = array(
    array(500, 250, 250, 0), // dividers for $number >= $limit, 0 - the rest of # 
    array(500, 250, 100, 0) // dividers for $number < $limit 
); 

$result = array();   // array with results 

$blocks = $number < $limit; // which set of dividers to use 

foreach($parts[$blocks] as $divider) 
    if ($number > $divider && $divider > 0) { 
     $result[] = $divider; // if number is larger than divider, add divider 
     $number -= $divider; // subtract divider from number 
    } 
    else { 
     $result[] = $number; // otherwise add the number 
     $number = 0;   // and set it to zero 
    } 

var_dump($result);   // output result 

없음 중첩 루프, 추가 조건을 쉽게 수정하고 $parts 배열에 더 많은 수치 값을 추가 할 수 있습니다. 부품 위와 $limit 아래 사이에는 차이가없는 경우, 코드는

$number = 500; 

$parts = array(500, 250, 250, 0); 

$result = array(); 

foreach($parts as $divider) 
    if ($number > $divider && $divider > 0) { 
     $result[] = $divider; 
     $number -= $divider; 
    } 
    else 
    { 
     $result[] = $number; 
     $number = 0; 
    } 

var_dump($result); 

출력은 당신이 묻는 정확히이다 (I 댓글에서 제대로 이해하지 못했다있을 수 있습니다) 훨씬 더 간단 할 것이다. 당신이 가고있다

+0

내가 찾고 있던 것을 exacly 고맙습니다 !! – Julez

0

쉬운 방법 ... 여기

$total_spidex = 5000; 
$price_total = array(); 
$count = $total_spidex; 

if ($count > 500){ 
$count -= 500; 
$price_total[0] = 500; 

    if ($count > 250){ 
    $count -= 250; 
    $price_total[1] = 250; 

     if ($count > 250){ 
     $count -= 250; 
     $price_total[2] = 250; 

      if ($count > 750){ 
      $count -= 750; 
      $price_total[3] = 750; 
      $price_total[4] = $count; 
      } 
      else $price_total[3] = $count; 

     } 
     else $price_total[2] = $count; 

    } 
    else $price_total[1] = $count; 

} 
else $price_total[0] = $count; 
+0

답변에 대한 코드 모양을 붙여 넣지 마십시오. 코드가하는 일이나 오류가 어디에 있는지 설명함으로써 OP를 도와주십시오. – sherb

+0

@atmacola : 답장하기 전에 그의 글에서 OP와의 더 나은 대화, 좋은 질문, 비교 등으로 자신을 조금씩 알아 보도록 유도했습니다. 걱정하지 마세요. 나는 코드를 게시하지 말라고 배웠습니다. 네가 아주 신선하고 쉬운 질문을 한 것처럼. 이것을하는 사람들은 실제로 천천히 SO를 죽이고 있습니다. 자, 실버 플레이트에 답을 주면 난이도가 평균 수준까지 떨어지는 것이 마지막입니다. ;) –

0
<?php 

// your code goes here 
$answer = array(); 
$value = 600; 

if($value > 500){ 
    array_push($answer, 500); 
    $value = $value-500; 
} 
else { 
    array_push($answer, $value); 
    $value = 0; 
} 
for ($i = 0; $i<2; $i++){ 
    if ($value >250){ 
     array_push($answer, 250); 
     $value = $value - 250; 
    } 
    else { 
     array_push($answer, $value); 
     $value = 0; 
    } 
} 

array_push($answer, $value); 
print_r($answer); 
?> 

당신이 당신의 의견에 따라,이 내가 쓴 것입니다 이동을 얻을.

+0

여기 간단한 변수 대신 변수를 사용하지 않았습니다. 원하는대로 바꿀 수 있습니다. – Dheerendra

1

은, 그 자체로이 도움이

<?php 

function splitNumber($number) 
{ 
    if ($number >= 1000) 
    { 
     $t[0] = 500; 
     $t[1] = $t[2] = 250; 
     $t[3] = $number - ($t[0]+$t[1]+$t[2]); 
    } 
    else if ($number > 750 && $number < 1000) 
    { 
     $t[0] = 500; 
     $t[1] = 250; 
     $t[2] = $number - ($t[0]+$t[1]); 
     $t[3] = 0; 
    } 
    else 
    { 
     $t[0] = $number; 
     $t[1] = $t[2] = $t[3] = 0; 
    } 

    return $t; 
} 

// Some results 

$my_number = splitNumber(768); 
// Array ([0] => 500 [1] => 250 [2] => 18 [3] => 0) 
$my_number = splitNumber(1953); 
// Array ([0] => 500 [2] => 250 [1] => 250 [3] => 953) 
$my_number = splitNumber(821); 
// Array ([0] => 500 [1] => 250 [2] => 71 [3] => 0) 
$my_number = splitNumber(2546); 
// Array ([0] => 500 [2] => 250 [1] => 250 [3] => 1546) 

// and so on ... 

?> 

희망을 expresive해야합니다.

+0

감사합니다. 내가 찾고있는 것이 무엇입니까 – Julez

+0

귀하의 필요에 맞는 해결책으로 표시하십시오. 그리고 도움이 된 것을 기쁘게 생각합니다;) oups, 위의 게시물에 표시된 것을 보았습니다;) – Stv