首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >PHP -按键值对多维数组进行分组

PHP -按键值对多维数组进行分组
EN

Stack Overflow用户
提问于 2013-07-23 20:25:53
回答 4查看 2.3K关注 0票数 3

我现在有这样的代码:

代码语言:javascript
代码运行次数:0
运行
复制
$files = glob('songs/*.{mp3}', GLOB_BRACE);
$dateUploaded = array();

foreach($files as $file){
    $path_parts = pathinfo($file);
    $dateUploaded[] = array("Date Uploaded" => date ("jS \of F,  Y", filemtime($file)), "File Name" => $path_parts['filename']);
}
print_r($dateUploaded);

哪种输出

代码语言:javascript
代码运行次数:0
运行
复制
Array (
    [0] => Array (
        [Date Uploaded] => 26th of February, 2013
        [File Name] => All That Glitters - This Sound (Felix Cartal Remix)
    )
    [1] => Array (
        [Date Uploaded] => 26th of February, 2013
        [File Name] => Bertie Blackman - Hide and Seek
    )
    [2] => Array (
        [Date Uploaded] => 18th of December, 2012
        [File Name] => Birds of Tokyo - This Fire
    )
    [3] => Array (
        [Date Uploaded] => 18th of December, 2012
        [File Name] => Bloc Party - Truth
    )
    [4] => Array (
        [Date Uploaded] => 18th of December, 2012
        [File Name] => C2C - Down the Road
    )
    [5] => Array (
        [Date Uploaded] => 18th of December, 2012
        [File Name] => Chance Waters - Young and Dumb feat Bertie Blackman
    )
    [6] => Array (
        [Date Uploaded] => 26th of February, 2013
        [File Name] => City Calm Down - Sense of Self
    )
    [7] => Array (
        [Date Uploaded] => 18th of December, 2012
        [File Name] => Clubfeet - Heartbreak
    )
    [8] => Array (
        [Date Uploaded] => 26th of February, 2013
        [File Name] => Cosmo Jarvis - My Own Thing
    )
    [9] => Array (
        [Date Uploaded] => 6th of June, 2013
        [File Name] => Courtney Barnett - History Eraser
    )
    [10] => Array (
        [Date Uploaded] => 6th of June, 2013
        [File Name] => Delphic - Baiya
    )
)

我正在尝试做的是通过“上传日期”键对这些进行分组。所以我有一个类似这样的东西:

代码语言:javascript
代码运行次数:0
运行
复制
Array (
    [26th of February, 2013] => Array (
        [0] All That Glitters - This Sound (Felix Cartal Remix)
        [1] Bertie Blackman - Hide and Seek
        [2] City Calm Down - Sense of Self
        [3] Cosmo Jarvis - My Own Thing
    )
    [18th of December, 2012] => Array (
        [0] Birds of Tokyo - This Fire
        [1] Bloc Party - Truth
        [2] C2C - Down the Road
        [3] Chance Waters - Young and Dumb feat Bertie Blackman
        [4] Clubfeet - Heartbreak
    )
    [6th of June, 2013] => Array (
        [0] Courtney Barnett - History Eraser
        [1] Delphic - Baiya
    )
)

有没有人能帮帮我,告诉我怎么做?

我正在努力实现的主要目标是能够只是将文件放在我的服务器上的文件夹中,并有我的脚本打印出来,在<ul>的形式,歌曲按上传日期分组。

代码语言:javascript
代码运行次数:0
运行
复制
<ul>
    Last Updated: 26th of February, 2013
    <li>All That Glitters - This Sound (Felix Cartal Remix)</li>
    <li>Bertie Blackman - Hide and Seek</li>
    <li>City Calm Down - Sense of Self</li>
    <li>Cosmo Jarvis - My Own Thing</li>
</ul>
<ul>
    Last Updated: 18th of December, 2012
    <li>Birds of Tokyo - This Fire</li>
    <li>Bloc Party - Truth</li>
    <li>C2C - Down the Road</li>
    <li>Chance Waters - Young and Dumb feat Bertie Blackman</li>
    <li>Clubfeet - Heartbreak</li>
</ul>
<ul>
    Last Updated: 6th of June, 2013
    <li>Courtney Barnett - History Eraser</li>
    <li>Delphic - Baiya</li>
</ul>

感谢每一个试图帮助我解决这个问题的人。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-07-23 20:31:15

代码语言:javascript
代码运行次数:0
运行
复制
foreach($files as $file){
    $path_parts = pathinfo($file);
    $date = date ("jS \of F,  Y", filemtime($file));
    if(isset($dateUploaded[$date])) {
          $dateUploaded[$date][] = $path_parts['filename'];
    } else {
          $dateUploaded[$date] = array($path_parts['filename']);
    }
}
票数 7
EN

Stack Overflow用户

发布于 2013-07-23 20:35:08

分组

代码语言:javascript
代码运行次数:0
运行
复制
$groups = array();
foreach ($dateUploaded as $du) {
  $key = $du['Date Uploaded'];
  if (!isset($groups[$key])) $groups[$key] = array();
  $groups[$key][] = $du['File Name'];
}

输出为列表

代码语言:javascript
代码运行次数:0
运行
复制
$ret = '';
foreach ($groups as $key=>$list)
  $ret.="<ul>\n".$key."<li>".implode("</li>\n<li>",$list)."</li></ul>";
票数 0
EN

Stack Overflow用户

发布于 2013-07-23 20:36:23

快速代码:

代码语言:javascript
代码运行次数:0
运行
复制
$arr = array();
foreach ($files as $file) {
  $date = $file['Date Uploaded'];
  $name = $file['File Name'];

  $arr[$date][] = $name;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17810142

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档