繁体   English   中英

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

[英]PHP - Grouping a Multidimensional array by key value

我目前有这个代码:

$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);

哪个输出

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
    )
)

我想要做的是通过“Date Uploaded”键对它们进行分组。 所以我有类似的东西:

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>的形式打印出按日期上传的歌曲。

<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>

感谢所有试图帮助我的人。

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']);
    }
}

分组

$groups = array();
foreach ($dateUploaded as $du) {
  $key = $du['Date Uploaded'];
  if (!isset($groups[$key])) $groups[$key] = array();
  $groups[$key][] = $du['File Name'];
}

输出为列表

$ret = '';
foreach ($groups as $key=>$list)
  $ret.="<ul>\n".$key."<li>".implode("</li>\n<li>",$list)."</li></ul>";

快速代码:

$arr = array();
foreach ($files as $file) {
  $date = $file['Date Uploaded'];
  $name = $file['File Name'];

  $arr[$date][] = $name;
}

这应该也有效:

$newArray = array();
 foreach($dateUploaded as $row)
 {
    $newArray[$row['Date Uploaded']][] = $row['File Name']
 }

 print_r($newArray);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM