2014-06-17 2 views
0

내 배열 계산에 어려움을 겪고 있습니다.배열의 항목 수 PHP

Array 
(
    [2014-06-17] => Array 
     (
      [0] => Array 
       (
        [id] => 40404 
        [client] => Client 1 
        [date] => 2014-06-17T14:57:08+0100 
       ) 

      [1] => Array 
       (
        [id] => 40403 
        [client] => Client 1 
        [date] => 2014-06-17T14:39:02+0100 
       ) 

      [2] => Array 
       (
        [id] => 40402 
        [client] => Client 2 
        [date] => 2014-06-17T13:34:18+0100 
       ) 

     ) 

) 

이렇게 만들면이 배열을 필터링하고 싶습니다.

Array 
(
    [2014-06-17] => Array 
     (
      [Client 1] => Array 
       (
        [submitted] => 2 
       ) 

      [Client 2] => Array 
       (
        [submitted] => 1 

       ) 
) 

현재 내 코드는 내가이 더 필터링 할 또 다른 foreach는 필요하지만 난이 배열 붙어 filting을 해요 추측하고있어, 다음과 같습니다.

foreach ($submissions as $sortArray) { 
     $dataJson[substr($sortArray['thing']['created'], 0, 10)][] = array(
      'id' => $sortArray['id'], 
      'client' => $sortArray['thing']['client']['name'], 
      'date' => $sortArray['thing']['created'] 
     ); 
     $filterd = $dataJson; 
    } 

    echo "<pre>"; 
    print_r($filterd); 
    echo "</pre>"; 

답변

1

뭔가이

$result = array(); 

foreach($source as $day => $orders) { 
    $clients = array(); 
    foreach ($orders as $order) { 
     if (!isset($clients[$order['client']])) { 
      $clients[$order['client']] = array('submitted' => 1); 
     } 
     else { 
      $clients[$order['client']]['submitted']++; 
     } 
    } 
    $result[$day] = $clients; 
} 
+0

우수 답변 감사합니다. – Brent

1

당신은 루프를 할 수와 배열 키로 클라이언트의 ID를 사용

foreach($submissions as $d) 
{ 
    if(isset($counts[$d['client']])) 
     $counts[$d['client']] = 1; 
    else 
     $counts[$d['client']]+=1; 
} 
0

같은 당신은 그것을 이런 식으로 수행 할 수 있습니다

$array = array(); 
foreach($submissions as $submission){ 
     $array[$submission['client']]['submitted'] = isset($array[$submission['client']]['submitted'])? ($array[$submission['client']]['submitted'] + 1): 1; 
}