如何使用PHP对嵌套命名空间数组中的值进行数组排序
我已经从一个xml文件生成了一个数组。该文件是来自许多youtube频道的视频信息。现在,我想用PHP按如何使用PHP对嵌套命名空间数组中的值进行数组排序,php,arrays,xml,sorting,namespaces,Php,Arrays,Xml,Sorting,Namespaces,我已经从一个xml文件生成了一个数组。该文件是来自许多youtube频道的视频信息。现在,我想用PHP按video:publication\u date(降序)对数组进行排序。我的目标是识别和显示xml文件中包含的所有频道的最新10个视频 如何做到这一点 我见过许多对简单数组进行排序的解决方案,但我不知道如何让它们对嵌套命名空间数组中的值进行排序,例如使用PHP的[video:video] print\r($array)输出如下所示: Array ( [urlset] => Arr
video:publication\u date
(降序)对数组进行排序。我的目标是识别和显示xml文件中包含的所有频道的最新10个视频
如何做到这一点
我见过许多对简单数组进行排序的解决方案,但我不知道如何让它们对嵌套命名空间数组中的值进行排序,例如使用PHP的[video:video]
print\r($array)输出如下所示:
Array
(
[urlset] => Array
(
[url] => Array
(
[0] => Array
(
[loc] => http://www. . . ./vod_page.php?channel=XXxxbnaoqvqbGpCcW9t3V1jQ&vid=xxxQSNyiwMk
[video:video] => Array
(
[video:thumbnail_loc] => https://i.ytimg.com/vi/xxxQSNyiwMk/hqdefault.jpg
[video:title] => Singing
[video:description] => Show
[video:player_loc] => http://www. . . ./jw57player.swf?file=http://www.youtube.com/watch?v=xxxQSNyiwMk
[video:duration] => 162
[video:view_count] => 38
[video:publication_date] => 2014-12-10T16:01:08.000Z
)
)
[1] => Array
(
[loc] => http://www. . . ./vod_page.php?channel=XXxxbnaoqvqbGpCcW9t3V1jQ&vid=xxxeDipW7PU
[video:video] => Array
(
[video:thumbnail_loc] => https://i.ytimg.com/vi/xxxeDipW7PU/hqdefault.jpg
[video:title] => Singing Live
[video:description] => Performing Nov.18th 2014
[video:player_loc] => http://www. . . ./jw57player.swf?file=http://www.youtube.com/watch?v=xxxeDipW7PU
[video:duration] => 244
[video:view_count] => 265
[video:publication_date] => 2014-12-09T11:14:00.000Z
)
)
[2] => Array
(
[loc] => http://www. . . ./vod_page.php?channel=XXxxbnaoqvqbGpCcW9t3V1jQ&vid=xxxyvRH4NEg
[video:video] => Array
(
[video:thumbnail_loc] => https://i.ytimg.com/vi/xxxyvRH4NEg/hqdefault.jpg
[video:title] => Making
[video:description] => Performing Nov.15th 2015
[video:player_loc] => http://www. . . ./jw57player.swf?file=http://www.youtube.com/watch?v=xxxyvRH4NEg
[video:duration] => 222
[video:view_count] => 79
[video:publication_date] => 2014-12-09T00:03:06.000Z
)
)
....
考虑以下使用,它需要一个较低级别的关联数组来对较大的数组进行排序。此解决方案甚至允许为其他排序字段留出空间 复制阵列(请注意,我故意错误地安排了演示的发布日期): 实际分拣代码
# TO CREATE SORTING ARRAY, $pubdate
$pubdate = array();
foreach ($youtube['urlset']['url'] as $ykey => $yvalue) {
$pubdate[] = $yvalue['video:video']['video:publication_date'];
}
# APPLYING SORTING TO ARRAY AT URL LEVEL
array_multisort($pubdate, SORT_DESC, $youtube['urlset']['url']);
输出(请注意,2014-12-10原来位于底部,因为URL[2]现在位于顶部,因为URL[0]是最近的日期)
使用
usort
并提供一个比较函数,将$arg1['video:video']['video:publication\u date']
与$arg2['video:video']['video:publication\u date']['video:publication\u date']
进行比较,我认为可以简化foreach($yvalue as$vkey=>$vvalue){…}
循环体到$pubdate[]=$yvalue['video:video']['video:publication_date'];
很好的建议!但事实上,你的建议在每个日期都增加了一倍,留下了6个日期项。但是删除了内部的foreach()
循环,效果很好!我很感激。
# TO CREATE SORTING ARRAY, $pubdate
$pubdate = array();
foreach ($youtube['urlset']['url'] as $ykey => $yvalue) {
$pubdate[] = $yvalue['video:video']['video:publication_date'];
}
# APPLYING SORTING TO ARRAY AT URL LEVEL
array_multisort($pubdate, SORT_DESC, $youtube['urlset']['url']);
Array
(
[urlset] => Array
(
[url] => Array
(
[0] => Array
(
[loc] => http://www. . . ./vod_page.php?channel=XXxxbnaoqvqbGpCcW9t3V1jQ&vid=xxxQSNyiwMk
[video:video] => Array
(
[video:thumbnail_loc] => https://i.ytimg.com/vi/xxxQSNyiwMk/hqdefault.jpg
[video:title] => Singing
[video:description] => Show
[video:player_loc] => http://www. . . ./jw57player.swf?file=http://www.youtube.com/watch?v=xxxQSNyiwMk
[video:duration] => 162
[video:view_count] => 38
[video:publication_date] => 2014-12-10CDT16:01:08.000-18000
)
)
[1] => Array
(
[loc] => http://www. . . ./vod_page.php?channel=XXxxbnaoqvqbGpCcW9t3V1jQ&vid=xxxeDipW7PU
[video:video] => Array
(
[video:thumbnail_loc] => https://i.ytimg.com/vi/xxxeDipW7PU/hqdefault.jpg
[video:title] => Singing Live
[video:description] => Performing Nov.18th 2014
[video:player_loc] => http://www. . . ./jw57player.swf?file=http://www.youtube.com/watch?v=xxxeDipW7PU
[video:duration] => 244
[video:view_count] => 265
[video:publication_date] => 2014-12-09CDT11:14:00.000-18000
)
)
[2] => Array
(
[loc] => http://www. . . ./vod_page.php?channel=XXxxbnaoqvqbGpCcW9t3V1jQ&vid=xxxyvRH4NEg
[video:video] => Array
(
[video:thumbnail_loc] => https://i.ytimg.com/vi/xxxyvRH4NEg/hqdefault.jpg
[video:title] => Making
[video:description] => Performing Nov.15th 2015
[video:player_loc] => http://www. . . ./jw57player.swf?file=http://www.youtube.com/watch?v=xxxyvRH4NEg
[video:duration] => 222
[video:view_count] => 79
[video:publication_date] => 2014-12-09CDT00:03:06.000-18000
)
)
)
)
)