第一种方法:

$b = array(

array('name'=>'北京','nums'=>'200'),

php数组查找下标PHP 对数组中的指定下标的值年夜小进行排序jsonencode应用留意 Docker

array('name'=>'上海','nums'=>0),

array('name'=>'广州','nums'=>'50'),

array('name'=>'深圳','nums'=>'70')

);

$a = array();

//取出数组中要排序的值放置新数组中

foreach($b as $key=>$val){

//去除掉值为0的数据

if($val['nums']){

$a[] = $val['nums'];

}

}

// var_dump($a);

//对新数组进行排序 很主要 如果不排序下面的循环赋值还是没有顺序

sort($a);

// var_dump($a);

//键值互换

$a = array_flip($a);

$result = array();

//循环原数组

foreach($b as $k=>$v){

//找到原数组中的数值

$temp1 = $v['nums'];

//过滤掉为0的值

if($temp1){

//通过原数组中的数值查询出他的下标

$temp2 = $a[$temp1];

//result[2]=200; result[0]=50; .......

$result[$temp2] = $v;

}

}

//这里还要把$result重新以键的大小进行排序

ksort($result);

var_dump($result);

第二种方法:

//把数组的值重新付给一个新数组

foreach ($b as $key => $value) {

$rating[$key] = $value['nums'];

}

//通过PHP系统函数对数组进行排序 正序 倒序都可以

// array_multisort($rating, SORT_DESC, $b);

array_multisort($rating, SORT_ASC, $b);

//输出排序好后的数组

var_dump($b);

主要提示:

如果你想要把数据进行json_encode 一定要把稳当从大到小排序时json会自动增加下标,可能导致前台无法利用该json串,以是重新对数组排下序即可。
(利用第二种方法自动排序了不须要再排序)

如:这个json串前端有可能解析不了{\"大众2\公众:{\"大众name\"大众:\"大众\u5317\u4eac\"大众,\"大众nums\"大众:\"大众200\"大众},\"大众1\"大众:{\"大众name\公众:\"大众\u6df1\u5733\"大众,\"大众nums\"大众:\公众70\公众},\"大众0\公众:{\"大众name\公众:\"大众\u5e7f\u5dde\"大众,\"大众nums\"大众:\公众50\"大众}}

一定要去掉变成下面这种。

[{\"大众name\"大众:\公众\u5e7f\u5dde\"大众,\公众nums\公众:\"大众50\"大众},{\"大众name\公众:\公众\u6df1\u5733\公众,\"大众nums\公众:\公众70\"大众},{\"大众name\"大众:\公众\u5317\u4eac\"大众,\"大众nums\"大众:\"大众200\公众}]

//数组重新排序

$i=0;

foreach($result as $v){

$res1[$i]=$v;

$i++;

}

die(json_encode($res1));

就由于这个序号导致我查询好久json串不能利用,只要去掉序号即可,这里给大家说一下,避免大家入坑。
希望对大家有所帮助。

作者:吾林爱分享