2013-04-23 2 views
0

일부 변수에 따라 값을 반복하여 배열을 만들려고합니다. 이 시나리오에서는 $slipszero = "2" & $slipsone = "1"이며 이러한 값은 변경 될 수 있습니다.변수를 기반으로 한 array_push 값은 여러 개입니까?

Array ( 
[0] => Array ([uid] => 105 [f_count] => 0) 
[1] => Array ([uid] => 106 [f_count] => 1) 
[2] => Array ([uid] => 107 [f_count] => 0) 
[3] => Array ([uid] => 108 [f_count] => 1) 
[4] => Array ([uid] => 109 [f_count] => 2) 
) 

내가이 배열로 끝날 싶습니다 대신

array(15) { 
[0] => string(3) "105" 
[1] => string(3) "105" 
[2] => string(3) "106" 
[3] => string(3) "107" 
[4] => string(3) "107" 
[5] => string(3) "108" 
[6] => string(3) "109" 
} 

이 배열로 시작하는, 그래서

$problist = array(); 
    foreach ($rows as $value) { 
     if ($value['f_count'] == 0) { 
      $placeholder = rtrim(str_repeat($value["uid"] . ',', $slipszero), ', ') ; 
      array_push($problist, $placeholder); 
      // The above array_push should act just like: 
      array_push($problist, $value['uid'], $value['uid']); 
     } elseif ($value['f_count'] == 1) { 
      $placeholder = rtrim(str_repeat($value["uid"] . ',', $slipsone), ', ') ; 
      array_push($problist, $placeholder); 
     } elseif ($value['f_count'] >= 2) { 
      $problist[] = $value['uid']; 
     } 
    } 

:
이 지금 현재 내 코드입니다 , 나는 이것을 얻고있다 :

Array ( 
[0] => 105,105 
[1] => 106 
[2] => 107,107 
[3] => 108 
[4] => 109 
) 

신생아를 돌보는 것은 내가 뭘 잘못하고 있는지 알 수 없기 때문에 내 두뇌를 쐈다.

+0

은'위 array_push 그냥 행동해야 // 좋아? – hek2mgl

+0

왜 사용하지 않습니까? 'for (; $ i <$ slipsone; $ i ++) // 배열 푸시? – Cooper

답변

1
$newArray = array(); 
foreach ($array as $subarray) { 
    $i = 1; // default value 
    if ($subarray["f_count"] === 0) 
     $i = $slipszero; 
    if ($subarray["f_count"] === 1) 
     $i = $slipsone; 
    while ($i--) 
     $newArray[] = (string)$subarray["uid"]; 
} 

이것은 $i$i$subarray["f_count"]에 따라 배열 된 문자열을 추가하고있다. ...`이유 :

+0

효율성을 위해서, 나는 하나 이상의 행을 삽입 할 때마다'$ array [] ='보다는'push_array()'를 사용하려고했다. – David

+0

@David'array_push'는 하나의 인수 만 사용할 때 더 효율적이지 않습니다. 그것은'$ array []'보다 느립니다. (그리고 여기에서는 값 하나만을 하나씩 푸시 할 수 있습니다.) – bwoebi

+0

바로 "하나 이상의 행을 삽입 할 때마다"를 지정했기 때문입니다. – David

0

사용이

$problist = array(); 
    foreach ($rows as $value) { 
     if ($value['f_count'] == 0) { 
      for($i=0;$i<$slipszero;$i++) 
       array_push($problist, $value["uid"];); 

     } elseif ($value['f_count'] == 1) { 
      for($i=0;$i<$slipsone;$i++) 
       array_push($problist, $value["uid"];); 
     } elseif ($value['f_count'] >= 2) { 
      $problist[] = $value['uid']; 
     } 
    }