我有一个关联数组,其中包含日期键和团队值.例如:
> 2016年3月21日10:05 => ‘底特律与费城’
> 2016年3月21日7:05 =>’多伦多与渥太华’
> 2016年3月21日7:05 => ‘Anahiem对阵波士顿’
> 2016年3月21日10:25 => ‘芝加哥与温尼伯’
问题是我正在解析的RSS源没有按顺序给我这些数据.所以我需要在日期之前订购这些游戏,当我在关联数组中添加这些字段时,重复日期(你可以看到两个游戏从3月21日7:05开始)被省略,因为两个键不能相同.我试图反转数据,所以键是值,值是键,我可以这样排序,但是当向后翻转数组时,(array_flip($input);)会出现同样的问题,因为两个键不能相同.
任何帮助将非常感谢.
<?PHP foreach ($Feed->get_items() as $item): // this is my Feed parser $string = $item->get_title(); // gets each element preg_match_all('/\((.*?)\)/',$string,$out); $timedate = ($out[1][2]); $array[$timedate] = $string; // creates an array with date as key,string data as values endforeach; ?>
解决方法
要做你想做的事,你必须把你拥有的数据放到一个稍微复杂的数组中,然后使用usort()函数根据你想要对它进行排序的键对它进行排序.这是一个例子:
<?PHP // Multidimensional array of 'games' $games[] = array('date' => 'march 21,2016 10:05','title' => 'Detroit vs Philly'); $games[] = array('date' => 'march 21,2016 7:05','title' => 'Toronto vs ottawa'); $games[] = array('date' => 'march 21,'title' => 'Anaheim vs Boston'); $games[] = array('date' => 'march 21,2016 10:25','title' => 'Chicago vs Winnipeg'); // Define a custom sort function to sort based on // the date index. This will not sort properly // since I'm only using strcmp,but it works as // an illustration. For more details see: // http://PHP.net/manual/en/function.usort.PHP function cmp($a,$b) { return strcmp($a['date'],$b['date']); } // Sort the array usort($games,"cmp"); print_r($games);
这将生成以下排序数组:
Array ( [0] => Array ( [date] => march 21,2016 10:05 [title] => Detroit vs Philly ) [1] => Array ( [date] => march 21,2016 10:25 [title] => Chicago vs Winnipeg ) [2] => Array ( [date] => march 21,2016 7:05 [title] => Toronto vs ottawa ) [3] => Array ( [date] => march 21,2016 7:05 [title] => Anaheim vs Boston ) )
您会注意到日期没有完全正确排序,因为strcmp()只是进行基本的字符串比较.你可以为我们定义的cmp()函数添加更多功能,将字符串转换为PHP日期,然后对它们进行实际的日期比较.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。