2014-09-25 3 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

Вы хотите отсортировать все массивы или закончить с массивом с единственным именем и дат-временем? –

ответ

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 ['artist'] [0] ['name'], $ b ['artist' ] [0] ['name'])) { \t \t \t return strcmp ($ a ['artist'] [0] ['name'], $ b ['artist'] [0] ['name' ]); \t \t \t} \t \t \t возврата зЬгстр ($ а [ 'DateTime'], $ Ь [ 'DateTime']); \t \t} \t \t \t \t usort ($ массив, "CMP"); – user3508214

Смежные вопросы