Упорядочение массива по значению - PullRequest
0 голосов
/ 11 сентября 2011

Я вытягиваю список своих альбомов vimeo, используя Vimeo API, и трижды циклически перебираю массив, чтобы добраться до альбомов. Работает нормально.

У меня вопрос: я изолирую дату, так как я могу создать новый массив и отсортировать его по дате?

В то время как где у него есть способ перейти на третий уровень многомерного массива?

    $albums=$vimeo->call('vimeo.albums.getAll', array('user_id' => $myUserId));

    $albums_array=object_2_array($albums);

    foreach($albums_array as $album_array_two){
        foreach($album_array_two as $album_array_three){
            foreach($album_array_threeas $album){
                if(stristr($album['title'],'conference')){
                    $title=$album['title'];
                    $description=$album['description'];
                    $date=stristr($album['description'],'.',true);
                    $year_comma=stristr($date,',');
                    $year=ereg_replace("[^0-9]", "", $year_comma);
                    $url_title='http://www.psfk.com/events/'.str_replace( " ", "-", strtolower($title));
                    $url='<a href="'.$url_title.'">'.$title.'</a>';
                    $thumb=$album['thumbnail_video']['thumbnails']['thumbnail'][1]['_content'];

                    echo '<li class="album">';
                    echo '<a href="'.$url_title.'"><img src="'.$thumb.'" alt="'.$title.'" /></a>';
                    echo '<div class="info">';
                    echo '<h2>'.$url.'</h2>';
                    echo $description.'<br />';
                    echo '<a href="'.$url_title.'">View...</a>';
                    echo '</div></li>';
                }
            }
        }
    }

Пример массива, возвращающего один элемент:

    Array ( 
    [generated_in] => 0.0828 
    [stat] => ok 
    [albums] => Array ( 
        [on_this_page] => 7 
        [page] => 1 
        [perpage] => 50 
        [total] => 7 
        [album] => Array ( 
            [0] => Array ( 
                [id] => 1690236 
                [title] =>  Interviews 
                [description] => 
                [created_on] => 2011-09-10 21:43:49 
                [total_videos] => 1 
                [url] => Array ( 
                    [0] => http://vimeo.com/album/1690236 
                    ) 
                [video_sort_method] => 
                [thumbnail_video] => Array ( 
                    [id] => 28825158 
                    [owner] => 718882 
                    [title] =>  Where Inspiration Comes From [thumbnails] => Array ( 
                        [thumbnail] => Array ( 
                            [0] => Array ( 
                                [height] => 75 
                                [width] => 100 
                                [_content] => http://b.vimeocdn.com/ts/192/593/192593029_100.jpg 
                            ) 
                        )
                    )
                )
            )
        )
    )
)

1 Ответ

3 голосов
/ 11 сентября 2011

Для сортировки по дате вы можете использовать функцию php_function array_multisort () . На этой странице есть хороший пример, который, я думаю, показывает, что вам нужно. Я постараюсь привести лучший пример, используя ваши данные. Предположим, что после просмотра ваших альбомов вы получаете массив $myAlbums, который выглядит следующим образом:

Array (
    [0] => Array(
        [title] => My Title
        [description] => some description
        [date] 01-05-2011
    )
    [1] => Array(
      .......
)

Чтобы отсортировать это по дате, вы можете сделать следующее (взято из примера на странице php)

<?php
// Obtain a list of columns
foreach ($myAlbums as $key => $row) {
    $date[$key]  = $row['date'];
}

// Sort the data with volume descending, edition ascending
// Add $myAlbums as the last parameter, to sort by the common key
array_multisort($date, SORT_DESC, $myAlbums);
?>

Тогда вы можете print_r($myAlbums);, и вы должны увидеть, что это отсортировано. Возможно, вам придется изменить флаг SORT_DESC в зависимости от того, в каком формате ваши даты. Я действительно не могу объяснить, КАК это работает, потому что я все еще пытаюсь выяснить это сам ... но я думаю, что это то, что вы необходимо.

...