21,886
社区成员
发帖
与我相关
我的任务
分享
如下数组:
$test = array(
1 => '1_5000',
2 => '1_10000',
3 => '1_7000',
4 => '1_6500',
5 => '1_5500',
6 => '1_10500',
7 => '0_0',
8 => '1_9000',
9 => '1_7000',
10 => '1_11000',
11 => '1_5000',
12 => '0_0'
);
$test = array(
1 => '1_5000',
2 => '1_10000',
3 => '1_7000',
4 => '1_6500',
5 => '1_5500',
6 => '1_10500',
7 => '0_0',
8 => '1_9000',
9 => '1_7000',
10 => '1_11000',
11 => '1_5000',
12 => '0_0'
);
$tmp = array();
$statickey = array();
foreach($test as $key=>$val){
if($val=='0_0'){
$statickey[$key] = $val;
}else{
list($a,$b) = explode('_', $val);
array_push($tmp, $b);
}
}
rsort($tmp);
for($i=1,$j=0,$len=count($test); $i<=$len; $i++){
if(!isset($statickey[$i])){
$result[$i] = $tmp[$j];
$j++;
}else{
$result[$i] = $statickey[$i];
}
}
print_r($result);
Array
(
[1] => 11000
[2] => 10500
[3] => 10000
[4] => 9000
[5] => 7000
[6] => 7000
[7] => 0_0
[8] => 6500
[9] => 5500
[10] => 5000
[11] => 5000
[12] => 0_0
)
$test = array(
1 => '1_5000',
2 => '1_10000',
3 => '1_7000',
4 => '1_6500',
5 => '1_5500',
6 => '1_10500',
7 => '0_0',
8 => '1_9000',
9 => '1_7000',
10 => '1_11000',
11 => '1_5000',
12 => '0_0',
);
foreach($test as $k=>$v) {
if($v == '0_0') $t[$k] = $v;
else $r[] = $v;
}
usort($r, 'foo');
$i = 1;
foreach($r as $v) {
if(isset($t[$i])) $test[$i] = $t[$i];
else $test[$i] = $v;
$i++;
}
var_export($test);
function foo($a, $b) {
list(, $a,, $b) = explode('_', $a . "_$b");
if($a == $b) return 0;
return $a > $b ? -1 : 1;
}
array (
1 => '1_11000',
2 => '1_10500',
3 => '1_10000',
4 => '1_9000',
5 => '1_7000',
6 => '1_7000',
7 => '0_0',
8 => '1_5500',
9 => '1_5000',
10 => '1_5000',
11 => '1_5000',
12 => '0_0',
)