php 奇数和偶数排序,php-仅对关联数组的奇数元素排序

如果我有一个像这样的关联数组

> 3 => 50

> 4 => 12

> 5 => 45

> 6 => 89

> 7 => 5

> 8 => 1个

现在,我只想按升序对奇数键的值进行排序.

输出应为:

> 7 => 5

> 4 => 12

> 5 => 45

> 6 => 89

> 3 => 50

> 8 => 1个

解决方法:

要维护原始键,您必须首先将偶数和奇数元素分开:

$odd = $even = array();

array_walk( $array, function( $val, $key ) use ( &$odd, &$even ) { ( $key % 2 ) ? $odd[$key] = $val : $even[$key] = $val; });

然后,对$odd数组进行排序:

asort( $odd );

最后,您重建数组:

$array = array();

while( current( $odd ) || current( $even ) )

{

if( current( $odd ) ) $array[key($odd)] = current( $odd );

if( current( $even ) ) $array[key($even)] = current( $even );

next( $odd );

next( $even );

}

print_r( $array );

请注意,您的问题有点模棱两可:如果您基于键值或键位置是奇数还是偶数,这还不是很清楚:此解决方案考虑键值和-谷歌在进行时和如果进行检查-即使您拥有比奇数键还要多(反之亦然).

标签:arrays,php,sorting

来源: https://codeday.me/bug/20191118/2031004.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值