2014-09-03 50 views
0
[ 
      { 
       "type": "photo", 
       "username": "Зубр Зубров", 
       "user_id": "816", 
       "avatar": "images/eb/ebffefae4de882a26e02d78f5c493477", 
       "date_from": "2014-09-03 12:22:50", 
       "comments_count": 0, 
       "image": "images/e6/e6069bfcf0beb79100789ffc458c7ff0", 
       "image_id": "5924", 
       "likes_count": 0, 
       "is_liked": false 
      }, 

      { 
       "type": "photo", 
       "username": "Зубр Зубров", 
       "user_id": "816", 
       "avatar": "images/eb/ebffefae4de882a26e02d78f5c493477", 
       "date_from": "2014-09-03 12:19:15", 
       "comments_count": 0, 
       "image": "images/37/37c544d487727b8b6a5d199980fd55e2", 
       "image_id": "5923", 
       "likes_count": 0, 
       "is_liked": false 
      }, 
      { 
       "type": "photo", 
       "username": "Eugene", 
       "user_id": "574", 
       "avatar": "images/b1/b1722a365c2397d30217ca2cdaefc745", 
       "date_from": "2014-09-02 21:10:19", 
       "comments_count": 1, 
       "image": "images/d4/d471840fa2391268cbff66b568a5d214", 
       "image_id": "5922", 
       "likes_count": 1, 
       "is_liked": true 
      } 
     ] 

以上響應是我從服務器生成的json。我必須將項目分組,其中date_from字段與另一個字段間隔1小時或更短。在上述情況下,前兩項應分組,因爲它們之間的date_from間隔將近3分鐘。也許我應該在sql級別上做,但現在的目標是在php代碼中進行設置。 分組結果應輸出分組項目的子陣列按字段排列的組項目

+1

您可以添加任何解決方案的嘗試?任何有用的代碼? – BlitZ 2014-09-03 06:54:12

+0

你有試過這樣做嗎? – 2014-09-03 06:55:41

+0

@ HAL9000我浪費了3-4個小時,沒有得到任何結果 – Eugene 2014-09-03 06:56:58

回答

0

通常對於分組而言,使用O(1)散列是個好主意。所以你應該遍歷數組,並設置一個新的哈希數組,其中字符串的「2014-09-03 12」部分作爲鍵,數組作爲值。添加到該陣列所有你需要的。

我寫PHP的很長一段時間以前,但在Python它會看起來很相像:

grouping = {} # hashing array 
for elem in elements: 
    grouping_key = elem["date_from"].split(':')[0] # or if you are sure about format: elem["date_from"][:13] - the first 13 characters 
    if grouping_key not in grouping.keys(): 
     grouping[grouping_key]= [] # new array 
    grouping[grouping_key].append(elem) 

現在你應該有2組。

+0

非常感謝! – Eugene 2014-09-03 07:35:12