2014-09-25 72 views
0

我试图通过一个数组首先由[艺术家] [0] [名]排序,然后按[DATETIME]所以我最终喜欢的东西排序嵌套的PHP数组与两个不同的值

9/25 - Artist1 
9/26 - Artist1 
9/27 - Artist1 
9/25 - Artist2 
9/26 - Artist2 
9/27 - Artist2 
... 

这是我从饲料中获取数据:

Array 
(
[0] => Array 
    (
     [ticket_url] => ... 
     [on_sale_datetime] => ... 
     [ticket_status] => ... 
     [url] => ... 
     [venue] => Array 
      (
       [longitude] => ... 
       [region] => ... 
       [city] => ... 
       [url] => ... 
       [country] => ... 
       [id] => ... 
       [latitude] => ... 
       [name] => ... 
      ) 

     [artists] => Array 
      (
       [0] => Array 
        (
         [mbid] => ... 
         [url] => ... 
         [name] => ... 
        ) 

      ) 

     [datetime] => ... 
     [id] => ... 
    ) 
) 

我可以排序[名]得很好,但无法弄清楚如何获得[DATETIME]为了去各个[名一起]。这是我到目前为止:

$object = $x->eventSearch($artists, $location, null, "$today,$next_week", 1, 100); 

    $array = objectToArray($object); 

    usort($array, function($a, $b) { 
     return strcmp($a['artists'][0]['name'], $b['artists'][0]['name']); 
    }); 

    foreach ($array as $key => $val) 
    { 

     $main_artist = $val[artists][0][name]; 

     $dateofevent = date("m/d", strtotime($val[datetime])); 
     $venue_city = $val[venue][city]; 
     $venue_region = $val[venue][region]; 
     $venue_name = $val[venue][name]; 
     ?> 
     <tr> 
      <td><?php echo $dateofevent; ?></td> 
      <td><?php echo $main_artist; ?></td> 
      <td><?php echo $venue_city . ", " . $venue_region; ?></td> 
      <td><?php echo $venue_name; ?></td> 
     </tr> 
    <?php } ?> 

任何有识之士将不胜感激。

+0

你想排序所有数组或结束与只有名称和日期时间的数组是否正确? – 2014-09-25 16:26:12

回答

0

按照艺术家姓名排序,然后按日期/时间排序。

usort($array, function($a, $b) { 
    $s = strcmp($a['artists'][0]['name'], $b['artists'][0]['name']); 
    if($s != 0) { return $s; } 
    datetime_comparison_here(); // your example data is helpfully '...' 
}); 
+0

谢谢,我最终这样做:function cmp($ a,$ b){ \t \t \t if(strcmp($ a ['artists'] [0] ['name'],$ b ['artists' ] [0] ['name'])){ \t \t \t \t返回strcmp($ a ['artists'] [0] ]); \t \t \t} \t \t \t返回的strcmp($一个[ '日期时间'],$ B [ '日期时间']); \t \t} \t \t \t \t usort($阵列, “CMP”); – user3508214 2014-09-25 17:54:25