2016-06-21 2 views
0

내가 배열에 걸쳐 반복이일곱 번째

function ($data) 
     { 
      $path = $data->data->data->clicks; 
      foreach ($path as $key => $item){ 
       if ($key >= 0) { 
       $array[] = $item->clicks; 
       }  
      } 
      return json_encode($array); 
     } 

나는 그것의 일곱 번째 키까지 반복 만들려고하는 기능을 가지고, 내가 쓴까지 배열 최대의 요소를 반복하는 방법에 if 문하지만, 나는 이것에 아주 새롭다 나는 이것을하는 방법을 모른다.

는이 같은 배열 구조를 보면 도움이 경우

["data"]=> 
    object(stdClass)#212 (3) { 
    ["status_code"]=> 
    int(200) 
    ["data"]=> 
    object(stdClass)#211 (3) { 
     ["days"]=> 
     int(30) 
     ["total_clicks"]=> 
     int(6) 
     ["clicks"]=> 
     array(30) { 
     [0]=> 
     object(stdClass)#215 (2) { 
      ["clicks"]=> 
      int(0) 
      ["day_start"]=> 
      int(1466395200) 
     } 
     [1]=> 
     object(stdClass)#216 (2) { 
      ["clicks"]=> 
      int(0) 
      ["day_start"]=> 
      int(1466308800) 
     } 
     [2]=> 
     object(stdClass)#217 (2) { 
      ["clicks"]=> 
      int(0) 
      ["day_start"]=> 
      int(1466222400) 
     } 
+1

처음 7 개 아이템 :'foreach (array_slice ($ path, 0, 7) $ item) {''if'는 필요 없습니다. – AbraCadaver

답변

3

그냥 카운트 업 변수를 추가하고 array_maparray_slice를 사용하여보다 큰 7

$num_loops = 0; 
foreach ($path as $key => $item){ 
    $num_loops++; 
    if($num_loops > 7) break; 
    if ($key >= 0) { 
     $array[] = $item->clicks; 
    } 
} 
0

짧은 방법 때 휴식을 함수 (루프 없음, 아니요 if 조건) :

$path = $data->data->data->clicks; 
$clicks = array_map(function($o){ 
    return $o->clicks; 
}, array_slice($path, 0, 7)); 
관련 문제