2011-09-30 7 views
1

데이터를 전송하는 휴대 기기에 가로 막 대형 차트를 만들려고합니다. 매 순간마다 각 모바일 장치는 데이터 패킷을 웹 서버에 보내고,이 데이터 패킷은 MySQL 데이터베이스에 저장됩니다. 각 모바일 장치에는 IP 주소가 할당되며 각 IP 주소는 분당 여러 번 데이터를 보낼 수 있습니다 (때로는 최대 10 개). CodeIgniter의 까다로운 연관 배열

date_received | bytes | IP address 
---------------------------------- 
1314831600 | 100 | 1482747555 
1314831600 | 990 | 1482747555 
1314831600 | 074 | 1482747555 
1314831660 | 420 | 1482747555 
1314831660 | 183 | 1482747555 

그래서 당신은 하나 개의 IP 주소는 시간 (따라서 여러 분)의 기간에 걸쳐 여러 번에게 분을 제출할 수 있음을 볼 수있다 : 다음과 같은 예를 들어 테이블이 보일 것이다 것입니다. 나는이 안쪽의 연관 배열을 만들 것입니다 방법 :

array 
(
    1314831600 = array 
       (
        1482747555 => 100, 
        1482747555 => 990, 
        1482747555 => 074 
       ); 
    1314831660 = array 
       (
        1482747555 => 420, 
        1482747555 => 183 
       ); 
); 

첫 번째 키는 date_received 값, 그리고 것 (해당 바이트 값으로) 그 시간 동안 전송 된 IP 주소. CodeIgniter를 사용하고 foreach 데이터베이스 루프에서 배열을 채우는 방법에 대해 생각했지만 실제로 이렇게하는 것이 가장 좋지는 않았습니다. 아무도 조언을 해 줄 수 있습니까?

N.B : 일부 테이블에는 수십만 개의 값이 들어 있기 때문에 데이터베이스 호출을 최소한으로 유지해야합니다.

답변

2

위의 (ip 주소)와 같은 배열 키는 덮어 쓸 수 없으므로 공유 할 수 없습니다. 당신이 데이터를 통해 루프 수있는 그런

$packets = array(); 
while ($row = mysql_fetch_assoc($res)) { 
    $packets[$row['date_received']][] = 
     array('ip_address'=>$row['ip_address'], 
     'bytes'=>$row['bytes'] 
    ); 
} 

:

foreach ($packets as $date => $info) { 
    echo "date = $date, ip = $info[ip_address], bytes = $info[bytes]"; 
} 
0

는이 같은 배열의 일부를 재 작성하는 경우이 문제가 당신을 위해 훨씬 쉬워집니다 : 뭔가처럼 당신은 할 수

 array 
      (
       1482747555 => array(100,990,074) 
      );