脚本宝典收集整理的这篇文章主要介绍了php – 将特定数组项移动到数组的开头而不改变其余的顺序,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
Array ( [PRoduct1] => Array ( [id] => 1 [tITle] => 'p1' [extra] => Array( [date] => '1990-02-04 16:40:26' ) ) [product2] => Array ( [id] => 2 [title] => 'p2' [extra] => Array( [date] => '1980-01-04 16:40:26' ) ) [product3] => Array ( [id] => 3 [title] => 'P3' [extra] => Array( [date] => '2000-01-04 16:40:26' ) ) [product4] => Array ( [id] => 4 [title] => 'p4' [extra] => Array( [date] => '1995-01-04 16:40:26' ) ) [product5] => Array ( [id] => 5 [title] => 'p5' [extra] => Array( [date] => '1960-01-04 16:40:26' ) ) ...
我需要获得具有最新日期的2个产品并将它们移动到阵列的开头.
我已经查看了multisort函数,我可以像这样排序数组,但是整个数组将按日期排列,我想保持数组的顺序,但只是提升最新的2行.
我需要从数组中选出最新的2个(按日期排序),然后将它们移到数组的开头.所以id的顺序应该是:
3,4,1,2,5
最新的2已被移动到数组的前面,其余的仍按id排序.
$array = /* your data */; $latest = $array; uasort($latest,function (array $a,array $b) { return strtotime($a['extra']['date']) - strtotime($b['extra']['date']); }); array_splice($latest,2); $latestOnTop = array_merge($latest,array_diff_key($array,$latest));
array_splice操作要求您的数组键实际上是product1或类似的;将无法使用数字索引,因为它们将重新编号.如果是这种情况,请使用另一种截断机制.
如果您的阵列非常大,那么完整的排序将会非常缓慢.在这种情况下,您应该循环遍历数组一次,跟踪您可以找到的两个最新项(及其键),然后是array_diff_key和array_merge.这有点难以实现(留给读者练习),但效率更高.
以上是脚本宝典为你收集整理的php – 将特定数组项移动到数组的开头而不改变其余的顺序全部内容,希望文章能够帮你解决php – 将特定数组项移动到数组的开头而不改变其余的顺序所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。