>我创建了一个像 arry
<?php
$arr['00']=NULL;
$arr['30']=NULL;
$arr['31']=0.013;
$arr['33']=0.013;
$arr['34']=0.013;
$arr['351']=NULL;
$arr['39']=0.013;
$arr['421']=NULL;
$arr['44']=0.009;
$arr['44GG']=0.009;
$arr['44IM']=0.009;
$arr['44JE']=0.009;
$arr['49']=0.013;
$arr['52']=NULL;
$arr['55']=NULL;
$arr['61']=NULL;
$arr['62']=NULL;
$arr['63']=NULL;
$arr['86']=NULL;
$arr['90']=NULL;
$arr['90CC']=NULL;
$arr['94']=NULL;
$arr['994']=NULL;
$arr['95']=0.02;
//before move
foreach( $arr as $i => $a)
{
echo $i.'-'.$a.'<br>';
}
echo '<br>';
uasort($arr, function($a, $b){
if ($a == NULL) return 1;
if ($b == NULL) return -1;
return 0;
});
//after move
foreach( $arr as $i => $a)
{
echo $i.'-'.$a.'<br>';
}
我想在不对索引进行排序的情况下向下移动 NULL 值并获得以下输出
31-0.013
33-0.013
34-0.013
39-0.013
44-0.009
44GG-0.009
44IM-0.009
44JE-0.009
49-0.013
95-0.02
00-
30-
351-
421-
52-
55-
61-
62-
63-
86-
90-
90CC-
94-
994-
但我正在得到
95-0.02
44-0.009
44JE-0.009
44IM-0.009
44GG-0.009
49-0.013
39-0.013
34-0.013
33-0.013
31-0.013
94-
90CC-
90-
86-
63-
62-
421-
55-
52-
30-
351-
994-
00-
61-
我可以使用循环和接收数组来做到这一点。 但我需要使用 UAsort。 请帮帮我提前谢谢。我是初学者。如果我问的是非常简单的问题,请原谅我
使用array_filter
函数和数组联合运算符+
的简短解决方案:
// $arr is your initial array
$null_items = array_filter($arr, "is_null");
$notnull_items = array_filter($arr);
$result = $notnull_items + $null_items;
print_r($result);
输出:
Array
(
[31] => 0.013
[33] => 0.013
[34] => 0.013
[39] => 0.013
[44] => 0.009
[44GG] => 0.009
[44IM] => 0.009
[44JE] => 0.009
[49] => 0.013
[95] => 0.02
[00] =>
[30] =>
[351] =>
[421] =>
[52] =>
[55] =>
[61] =>
[62] =>
[63] =>
[86] =>
[90] =>
[90CC] =>
[94] =>
[994] =>
)