Как сделать так, чтобы кто-то с более высоким subscriberCount попал в топ? Например, я хочу перечислить 50 лучших по subscriberCount. В настоящее время он просто сортируется по порядку добавления в $topchan1["items"]. Мне нужно заказать по высшему subscriberCount.
$topchan1 = json_decode(file_get_contents('https://www.googleapis.com/youtube/v3/channels?id='
.$kanalas1.'&part=snippet%2Cstatistics&key='.$API.''),true);
$videoList = array_merge($topchan1["items"],$topchan2["items"],$topchan3["items"],$topchan4["items"]);
foreach ($videoList as $key => $part) {
$sort[$key] = sort($part['statistics']['subscriberCount']);
}
array_multisort($sort, SORT_DESC, $videoList);
$i = 1;
for( $i = 0 ; $i <= count($videoList)-1 ; $i++ )
{
if (isset($videoList[$i]["statistics"]["subscriberCount"])) {
echo $videoList[$i]["statistics"]["subscriberCount"].' _ ';
}
}
как выглядит
array ( 0 => array ( 'kind' => 'youtube#channel', 'etag' => '"XI7nbFXulYBIpL0ayR_gDh3eu1k/Wj45BU6eiZOcR9nLVG4cXvflUNY"', 'id' => 'UCgQ1CeGtjCbkvslmG3zTAFA', 'snippet' => array ( 'title' => 'ILYA STREKAL', 'description' => 'Привет, меня зовут Илья Стрекаловский, добро пожаловать на мой канал!', 'customUrl' => 'BayanCover', 'publishedAt' => '2013-01-13T15:44:18.000Z', 'thumbnails' => array ( 'default' => array ( 'url' => 'https://yt3.ggpht.com/a-/AN66SAytpuX_75kGnsI5bvr_EkGTeQtZy3AJJXfH2w=s88-mo-c-c0xffffffff-rj-k-no', 'width' => 88, 'height' => 88, ), 'medium' => array ( 'url' => 'https://yt3.ggpht.com/a-/AN66SAytpuX_75kGnsI5bvr_EkGTeQtZy3AJJXfH2w=s240-mo-c-c0xffffffff-rj-k-no', 'width' => 240, 'height' => 240, ), 'high' => array ( 'url' => 'https://yt3.ggpht.com/a-/AN66SAytpuX_75kGnsI5bvr_EkGTeQtZy3AJJXfH2w=s800-mo-c-c0xffffffff-rj-k-no', 'width' => 800, 'height' => 800, ), ), 'localized' => array ( 'title' => 'ILYA STREKAL', 'description' => 'Привет, меня зовут Илья Стрекаловский, добро пожаловать на мой канал!', ), 'country' => 'RU', ), 'statistics' => array ( 'viewCount' => '234688406', 'commentCount' => '0', 'subscriberCount' => '2254032', 'hiddenSubscriberCount' => false, 'videoCount' => '153', ), ),
1 => array ( 'kind' => 'youtube#channel', 'etag' => '"XI7nbFXulYBIpL0ayR_gDh3eu1k/1vk-0WWcl2cpv1LO_4WQGsb2Qhk"', 'id' => 'UCMnOYmqiAQhE51l6AzEuOBA', 'snippet' => array ( 'title' => '', 'customUrl' => 'yanshelestx', 'publishedAt' => '2016-01-08T13:06:33.000Z', 'thumbnails' => array ( 'default' => array ( 'url' => 'https://yt3.ggpht.com/a-/AN66SAx6VddPszhqRGnHG48L5wVzTyf-h9lFa4F9Ig=s88-mo-c-c0xffffffff-rj-k-no', 'width' => 88, 'height' => 88, ), 'medium' => array ( 'url' => 'https://yt3.ggpht.com/a-/AN66SAx6VddPszhqRGnHG48L5wVzTyf-h9lFa4F9Ig=s240-mo-c-c0xffffffff-rj-k-no', 'width' => 240, 'height' => 240, ), 'high' => array ( 'url' => 'https://yt3.ggpht.com/a-/AN66SAx6VddPszhqRGnHG48L5wVzTyf-h9lFa4F9Ig=s800-mo-c-c0xffffffff-rj-k-no', 'width' => 800, 'height' => 800, ), ), 'defaultLanguage' => 'ru', 'localized' => array ( 'title' => 'Shelest', 'description' => 'Hello! This channel is dedicated to high-tech. I\'m a big lover of quality products for an adequate cost. The channel will express the personal opinion of the purchased goods and to listen to your words. Thank you!', ), 'country' => 'UA', ), 'statistics' => array ( 'viewCount' => '53038697', 'commentCount' => '0', 'subscriberCount' => '404844', 'hiddenSubscriberCount' => false, 'videoCount' => '123', ), ),
2 => array ( 'kind' => 'youtube#channel', 'etag' => '"XI7nbFXulYBIpL0ayR_gDh3eu1k/sSeA4B5B1NeVdRrLvhV6IQk9AJs"', 'id' => 'UCEFpNxeybzVwRbnYabQsXEg', 'snippet' => array ( 'title' => 'Bass Music Movement', 'description' => 'Music Promotion & Record Label Submissions/Business inquiries: [email protected]', 'customUrl' => 'brazilianbassmovement', 'publishedAt' => '2017-03-06T02:48:38.000Z', 'thumbnails' => array ( 'default' => array ( 'url' => 'https://yt3.ggpht.com/a-/AN66SAx25V8TX9UzZkzfLlHPFH9yFjxQQQFeILTi=s88-mo-c-c0xffffffff-rj-k-no', 'width' => 88, 'height' => 88, ), 'medium' => array ( 'url' => 'https://yt3.ggpht.com/a-/AN66SAx25V8TX9UzZkzfLlHPFH9yFjxQQQFeILTi=s240-mo-c-c0xffffffff-rj-k-no', 'width' => 240, 'height' => 240, ), 'high' => array ( 'url' => 'https://yt3.ggpht.com/a-/AN66SAx25V8TX9UzZkzfLlHPFH9yFjxQQQFeILTi=s800-mo-c-c0xffffffff-rj-k-no', 'width' => 800, 'height' => 800, ), ), 'localized' => array ( 'title' => 'Bass Music Movement', 'description' => 'Music Promotion & Record Label Submissions/Business inquiries: [email protected]', ), 'country' => 'BR', ), 'statistics' => array ( 'viewCount' => '136215709', 'commentCount' => '0', 'subscriberCount' => '748023', 'hiddenSubscriberCount' => false, 'videoCount' => '46', ), ),
3 => array ( 'kind' => 'youtube#channel', 'etag' => '"XI7nbFXulYBIpL0ayR_gDh3eu1k/VwnSAHbLaj-RwQW8QKFECxplCp4"', 'id' => 'UCAf-RYRpQgxpj8voC29ck7w', 'snippet' => array ( 'title' => 'Hard Play', 'description' => '', 'customUrl' => 'hardplaygamechannel', 'publishedAt' => '2016-06-23T20:39:00.000Z', 'thumbnails' => array ( 'default' => array ( 'url' => '', 'width' => 88, 'height' => 88, ), 'medium' => array ( 'url' => 'https://yt3.ggpht.com/a-/AN66SAyu2XfSQsqjyNqu-fTTjleD9XzLSLoLsP-8Yw=s240-mo-c-c0xffffffff-rj-k-no', 'width' => 240, 'height' => 240, ), 'high' => array ( 'url' => 'https://yt3.ggpht.com/a-/AN66SAyu2XfSQsqjyNqu-fTTjleD9XzLSLoLsP-8Yw=s800-mo-c-c0xffffffff-rj-k-no', 'width' => 800, 'height' => 800, ), ), 'localized' => array ( 'title' => 'Hard Play', 'description' => '', ), 'country' => 'RU', ), 'statistics' => array ( 'viewCount' => '39723260', 'commentCount' => '0', 'subscriberCount' => '784162', 'hiddenSubscriberCount' => false, 'videoCount' => '260', ), ), )
ну почему бы вам не сортировать в mysql? Я предполагаю, что данные поступают из БД
я получаю все данные из json api
нет :( нужно делать только с php, я уже сделал другой код с сортировкой по publishDate, теперь нужно сделать это
Используйте метод usort()
Вивек не работает или я делаю что-то плохое
это во второй строке videoList, просто объедините jsons. Я добавил полный код, теперь он работает, просто нужно отсортировать
добавил, как выглядит все






Вам необходимо использовать usort() с функцией Custome, где вы можете сравнить viewCount и отсортировать массив в порядке DESC.
function sortByviewCount($a, $b) {
return ($a['statistics']['viewCount'] > $b['statistics']['viewCount']) ? -1:1;
}
usort($videoList, 'sortByviewCount');
print_r($videoList);
Выход: -https://3v4l.org/HqXVc
но у меня около 60 каналов json, и мне нужно, чтобы все они сортируют ваш код, сортируют только 2 массива, да?
$videoList должен объединить данные всех 60 channels json, и тогда мой код будет работать и для этого.
протестировал его работу! Благодарность !!!
Мне нужно просто отсортировать, у кого больше ценность, которую он показывает выше, чем у других. как ТОП-СПИСОК 1. 2. 3. места